[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] phpgwapi/inc/class.common.inc.php, 1.221
From: |
nomail |
Subject: |
[Phpgroupware-cvs] phpgwapi/inc/class.common.inc.php, 1.221 |
Date: |
Thu, 30 Dec 2004 07:47:30 +0100 |
Update of /phpgwapi/inc
Added Files:
Branch:
class.common.inc.php
date: 2004/12/30 06:47:30; author: skwashd; state: Exp; lines: +725 -1445
Log Message:
new HEAD
=====================================================================
<?php
/**
* Commononly used functions
* @author Dan Kuykendall <address@hidden>
* @author Joseph Engo <address@hidden>
* @author Mark Peters <address@hidden>
* @copyright Copyright (C) 2000-2004 Free Software Foundation, Inc
http://www.fsf.org/
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General
Public License
* @package phpgwapi
* @subpackage utilities
* @version $Id: class.common.inc.php,v 1.221 2004/12/30 06:47:30
skwashd Exp $
*/
$d1 = strtolower(@substr(PHPGW_API_INC,0,3));
$d2 = strtolower(@substr(PHPGW_SERVER_ROOT,0,3));
$d3 = strtolower(@substr(PHPGW_APP_INC,0,3));
if($d1 == 'htt' || $d1 == 'ftp' || $d2 == 'htt' || $d2 == 'ftp' || $d3
== 'htt' || $d3 == 'ftp')
{
echo 'Failed attempt to break in via an old Security
Hole!<br>'."\n";
exit;
}
unset($d1);unset($d2);unset($d3);
/**
* Commononly used functions
*
* @package phpgwapi
* @subpackage utilities
*/
class common
{
/**
* An array with debugging info from the API
* @var array Debugging info from the API
*/
var $debug_info;
var $found_files;
/**
* This function compares for major versions only
*
* @param string $str1 Version string 1
* @param string $str2 Version string 2
* @param boolean $debug Debug flag
* @return integer 1 when str2 is newest (bigger version number)
than str1
*/
function cmp_version($str1,$str2,$debug=False)
{
ereg("([0-9]+)\.([0-9]+)\.([0-9]+)[a-zA-Z]*([0-9]*)",$str1,$regs);
ereg("([0-9]+)\.([0-9]+)\.([0-9]+)[a-zA-Z]*([0-9]*)",$str2,$regs2);
if($debug) { echo "<br />$regs[0] - $regs2[0]"; }
for($i=1;$i<5;++$i)
{
if($debug) { echo "<br />$i: $regs[$i] -
$regs2[$i]"; }
if($regs2[$i] == $regs[$i])
{
continue;
}
if($regs2[$i] > $regs[$i])
{
return 1;
}
elseif($regs2[$i] < $regs[$i])
{
return 0;
}
}
}
/**
* This function compares for major and minor versions
*
* @param string $str1 Version string 1
* @param string $str2 Version string 2
* @param boolean $debug Debug flag
* @return integer 1 when str2 is newest (bigger version number)
than str1
*/
function cmp_version_long($str1,$str2,$debug=False)
{
ereg("([0-9]+)\.([0-9]+)\.([0-9]+)[a-zA-Z]*([0-9]*)\.([0-9]*)",$str1,$regs);
ereg("([0-9]+)\.([0-9]+)\.([0-9]+)[a-zA-Z]*([0-9]*)\.([0-9]*)",$str2,$regs2);
if($debug) { echo "<br />$regs[0] - $regs2[0]"; }
for($i=1;$i<6;++$i)
{
if($debug) { echo "<br />$i: $regs[$i] -
$regs2[$i]"; }
if($regs2[$i] == $regs[$i])
{
if($debug) { echo ' are equal...'; }
continue;
}
if($regs2[$i] > $regs[$i])
{
if($debug) { echo ', and a > b'; }
return 1;
}
elseif($regs2[$i] < $regs[$i])
{
if($debug) { echo ', and a < b'; }
return 0;
}
}
if($debug) { echo ' - all equal.'; }
}
/**
* This function is used for searching the access fields
*
* @param string $table Table name
* @param integer $owner User ID
* @return string SQL where clause
* @deprecated Use ACL class instead
*/
function sql_search($table, $owner=0 )
{
echo 'common::sql_search() is a deprecated function -
use ACL class instead';
if (!$owner)
{
$owner =
$GLOBALS['phpgw_info']['user']['account_id'];
}
$groups =
$GLOBALS['phpgw']->accounts->membership(intval($owner));
if( is_array($groups) )
{
$s = " OR $table IN (0";
foreach($groups as $group)
{
$s .= ", {$group[2]}";
}
$s .= ')';
}
return $s;
}
/**
* Get list of installed languages
*
* @return array List of installed languages
*/
function getInstalledLanguages()
{
$GLOBALS['phpgw']->db->query('select distinct lang from
phpgw_lang');
while (@$GLOBALS['phpgw']->db->next_record())
{
$installedLanguages[$GLOBALS['phpgw']->db->f('lang')] =
$GLOBALS['phpgw']->db->f('lang');
}
return $installedLanguages;
}
/**
* Get preferred language of the users
*
* Uses HTTP_ACCEPT_LANGUAGE (from the users browser) to find
out which languages are installed
* @return string Users preferred language (two character ISO
code)
*/
function getPreferredLanguage()
{
// create a array of languages the user is accepting
$userLanguages =
explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$supportedLanguages = $this->getInstalledLanguages();
// find usersupported language
foreach($userLanguages as $key => $value)
{
// remove everything behind '-' example: de-de
$value = trim($value);
$pieces = explode('-', $value);
$value = $pieces[0];
# print 'current lang $value<br>';
if ($supportedLanguages[$value])
{
$retValue=$value;
break;
}
}
// no usersupported language found -> return english
if (empty($retValue))
{
$retValue='en';
}
return $retValue;
}
/**
* Connect to the ldap server and return a handle
*
* @param string $host LDAP host name
* @param string $dn LDAP distinguised name
* @param string $passwd LDAP password
* @return resource LDAP link identifier
*/
function ldapConnect($host = '', $dn = '', $passwd = '')
{
if (! $host)
{
$host =
$GLOBALS['phpgw_info']['server']['ldap_host'];
}
if (! $dn)
{
$dn =
$GLOBALS['phpgw_info']['server']['ldap_root_dn'];
}
if (! $passwd)
{
$passwd =
$GLOBALS['phpgw_info']['server']['ldap_root_pw'];
}
// connect to ldap server
if (! $ds = ldap_connect($host))
{
/* log does not exist in setup(, yet) */
if(is_object($GLOBALS['phpgw']->log))
{
$GLOBALS['phpgw']->log->message('F-Abort, Failed connecting to LDAP server');
$GLOBALS['phpgw']->log->commit();
}
printf("<b>Error: Can't connect to LDAP server
%s!</b><br>",$host);
return False;
}
if(! @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION,
3))//LDAP protocol v3 support
{
if(is_object($GLOBALS['phpgw']->log))
{
//$GLOBALS['phpgw']->log->message('set_option(protocol v3) failed using v2');
//$GLOBALS['phpgw']->log->commit();
}
}
else
{
if(is_object($GLOBALS['phpgw']->log))
{
//$GLOBALS['phpgw']->log->message('set_option(protocol v3) succeded using v3');
//$GLOBALS['phpgw']->log->commit();
}
}
// bind as admin, we not to able to do everything
if (! ldap_bind($ds,$dn,$passwd))
{
if(is_object($GLOBALS['phpgw']->log))
{
$GLOBALS['phpgw']->log->message('F-Abort, Failed binding to LDAP server');
$GLOBALS['phpgw']->log->commit();
}
printf("<b>Error: Can't bind to LDAP server:
%s!</b><br>",$dn);
return False;
}
return $ds;
}
/**
* Function to stop running an application
*
* Used to stop running an application in the middle of execution
* @internal There may need to be some cleanup before hand
* @param boolean $call_footer When true then call footer else
exit
*/
function phpgw_exit($call_footer = False)
{
if (!defined('PHPGW_EXIT'))
{
define('PHPGW_EXIT',True);
if ($call_footer)
{
$this->phpgw_footer();
}
}
exit;
}
function phpgw_final()
{
if (!defined('PHPGW_FINAL'))
{
define('PHPGW_FINAL',True);
// call the asyncservice check_run function if
it is not explicitly set to cron-only
//
if
(!$GLOBALS['phpgw_info']['server']['asyncservice']) // is default
{
ExecMethod('phpgwapi.asyncservice.check_run','fallback');
}
/* Clean up mcrypt */
if (@is_object($GLOBALS['phpgw']->crypto))
{
$GLOBALS['phpgw']->crypto->cleanup();
unset($GLOBALS['phpgw']->crypto);
}
$GLOBALS['phpgw']->db->disconnect();
}
}
/**
* Get random string of size $size
*
* @param integer $size Size of random string to return
* @return string STring with random generated characters and
numbers
*/
function randomstring($size)
{
$s = '';
srand((double)microtime()*1000000);
$random_char =
array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
'w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
for ($i=0; $i<$size; ++$i)
{
$s .= $random_char[rand(1,61)];
}
return $s;
}
function filesystem_separator()
{
return filesystem_separator();
}
/**
* This is used for reporting errors in a nice format
*
* @param array $error List of errors
* @param string $text Heading error text
* @return boolean|string HTML table with error messages or
false
*/
function error_list($errors,$text='Error')
{
if (! is_array($errors))
{
return False;
}
$html_error = '<table border="0" width="100%"><tr><td
align="right"><strong>' . lang($text)
. '</strong>: </td><td align="left">' .
$errors[0] . '</td></tr>';
for ($i=1; $i<count($errors); ++$i)
{
$html_error .= '<tr><td> </td><td
align="left">' . $errors[$i] . '</td></tr>';
}
return $html_error . '</table>';
}
/**
* Create a link when user is the owner otherwise
*
* @param integer $record User or account id
* @param string $link URL
* @param string $label Link name
* @param array $extravars URL parameter
* @deprecated use ACL instead
*/
function check_owner($record,$link,$label,$extravars = '')
{
echo 'check_owner() is a depreciated function - use ACL
class instead <br />';
/*
$s = '<a href="' .
$GLOBALS['phpgw']->link($link,$extravars) . '"> ' . lang($label) . ' </a>';
if (ereg('^[0-9]+$',$record))
{
if ($record !=
$GLOBALS['phpgw_info']['user']['account_id'])
{
$s = ' ';
}
}
else
{
if ($record !=
$GLOBALS['phpgw_info']['user']['userid'])
{
$s = ' ';
}
}
return $s;
*/
}
/**
* Get fullname of a user
*
* @param string $lid Account login id
* @param string $firstname Firstname
* @param string $lastname Lastname
* @return Fullname
*/
function display_fullname($lid = '', $firstname = '', $lastname
= '')
{
if (! $lid && ! $firstname && ! $lastname)
{
$lid =
$GLOBALS['phpgw_info']['user']['account_lid'];
$firstname =
$GLOBALS['phpgw_info']['user']['firstname'];
$lastname =
$GLOBALS['phpgw_info']['user']['lastname'];
}
$display =
$GLOBALS['phpgw_info']['user']['preferences']['common']['account_display'];
if (!$firstname && !$lastname || $display == 'username')
{
return $lid;
}
if ($lastname)
{
$a[] = $lastname;
}
if ($firstname)
{
$a[] = $firstname;
}
$name = '';
switch($display)
{
case 'all':
if ($lid)
{
$name = '['.$lid.'] ';
}
// fall-through
case 'lastname':
$name .= implode(', ',$a);
break;
case 'firstall':
if ($lid)
{
$name = ' ['.$lid.']';
}
// fall-through
case 'firstname':
default:
$name = $firstname . ' ' . $lastname .
$name;
}
return $name;
}
/**
* Grab the owner name
*
* @param integer $accountid Account id
* @return string Users fullname
*/
function grab_owner_name($accountid = '')
{
$GLOBALS['phpgw']->accounts->get_account_name($accountid,$lid,$fname,$lname);
return $this->display_fullname($lid,$fname,$lname);
}
/**
* Create tabs
*
* @param array $tabs With ($id,$tab) pairs
* @param integer $selected Id of selected tab
* @param string $fontsize Optional font size
* @param boolean $lang When true use translation otherwise use
given label
* @param boolean $no_image Do not use an image for the tabs
* @return string HTML output string
*/
function create_tabs($tabs, $selected, $fontsize = '', $lang =
False, $no_image = True)
{
if($no_image)
{
$output_text = "<table style=\"{padding: 0px;
border-collapse: collapse; width: 100%;}\">\n\t<tr>\n";
// $output_text = "<table style=\"{padding: 0px;
width: 100%;}\">\n\t<tr>\n";
foreach($tabs as $id => $tab)
{
$output_text .= "\t\t" . '<th class="';
$output_text .= ($id != $selected ?
'in' : '');
$output_text .= 'activetab">';
$output_text .= '<a href="' .
$tab['link'] . '">';
$output_text .= ($lang ?
lang($tab['label']) : $tab['label']);
$output_text .= "</a></th>\n";
// $output_text .= "<th
style=\"border-bottom: 1px solid #000000; \"> </th>\n";
}
$output_text .= "\t\t" . '<th
class="tablast"> </th>' . "\n";
$output_text .= "\t</tr>\n</table>\n";
return $output_text;
}
$output_text = '<table border="0" cellspacing="0"
cellpadding="0"><tr>';
/* This is a php3 workaround */
if(PHPGW_IMAGES_DIR == 'PHPGW_IMAGES_DIR')
{
$ir =
ExecMethod('phpgwapi.phpgw.common.get_image_path', 'phpgwapi');
}
else
{
$ir = PHPGW_IMAGES_DIR;
}
if ($fontsize)
{
$fs = '<font size="' . $fontsize . '">';
$fse = '</font>';
}
$i = 1;
if( !is_array($tabs) )
{
$tabs = array();
}
foreach($tabs as $tabs)
{
if ($tab[0] == $selected)
{
if ($i == 1)
{
$output_text .= '<td
align="right"><img src="' . $ir . '/tabs-start1.gif" /></td>';
}
$output_text .= '<td nowrap="nowrap"
align="left" background="' . $ir . '/tabs-bg1.gif"> <strong><a href="'
. $tab[1]['link'] . '"
class="tablink">' . $fs . $tab[1]['label']
. $fse .
'</a></strong> </td>';
if ($i == count($tabs))
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-end1.gif" /></td>';
}
else
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-sepr.gif" /></td>';
}
}
else
{
if ($i == 1)
{
$output_text .= '<td
align="right"><img src="' . $ir . '/tabs-start0.gif" /></td>';
}
$output_text .= '<td nowrap="nowrap"
align="left" background="' . $ir . '/tabs-bg0.gif"> <strong><a href="'
. $tab[1]['link'] . '"
class="tablink">' . $fs . $tab[1]['label'] . $fse
. '</a></strong> </td>';
if (($i + 1) == $selected)
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-sepl.gif" /></td>';
}
elseif ($i == $selected || $i !=
count($tabs))
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-sepm.gif" /></td>';
}
elseif ($i == count($tabs))
{
if ($i == $selected)
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-end1.gif" /></td>';
}
else
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-end0.gif" /></td>';
}
}
else
{
if ($i != count($tabs))
{
$output_text .= '<td
align="left"><img src="' . $ir . '/tabs-sepr.gif" /></td>';
}
}
}
++$i;
$output_text .= "\n";
}
$output_text .= "</table>\n";
return $output_text;
}
/**
* Get directory of application
*
* @param string $appname Name of application defaults to
$phpgw_info['flags']['currentapp']
* @return string|boolean Application directory or false
*/
function get_app_dir($appname = '')
{
if ($appname == '')
{
$appname =
$GLOBALS['phpgw_info']['flags']['currentapp'];
}
if ($appname == 'home' || $appname == 'logout' ||
$appname == 'login')
{
$appname = 'phpgwapi';
}
$appdir = PHPGW_INCLUDE_ROOT . '/'.$appname;
$appdir_default = PHPGW_SERVER_ROOT . '/'.$appname;
if (@is_dir ($appdir))
{
return $appdir;
}
elseif (@is_dir ($appdir_default))
{
return $appdir_default;
}
else
{
return False;
}
}
/**
* Get include directory of application
*
* @param string $appname Name of application, defaults to
$phpgw_info['flags']['currentapp']
* @return string|boolean Include directory or false
*/
function get_inc_dir($appname = '')
{
if (! $appname)
{
$appname =
$GLOBALS['phpgw_info']['flags']['currentapp'];
}
if ($appname == 'home' || $appname == 'logout' ||
$appname == 'login')
{
$appname = 'phpgwapi';
}
$incdir = PHPGW_INCLUDE_ROOT . '/' . $appname .
'/inc';
$incdir_default = PHPGW_SERVER_ROOT . '/' . $appname .
'/inc';
if (@is_dir ($incdir))
{
return $incdir;
}
elseif (@is_dir ($incdir_default))
{
return $incdir_default;
}
else
{
return False;
}
}
/**
* List themes available
*
* Themes can either be css files like in HEAD (if the template
has a css-directory) or ordinary .14 themes-files
* @return array List with available themes
*/
function list_themes()
{
$tpl_dir = $this->get_tpl_dir('phpgwapi');
if ($dh = @opendir($tpl_dir . SEP . 'css'))
{
while ($file = readdir($dh))
{
if (eregi("\.css$", $file) && $file !=
'phpgw.css')
{
$list[] =
substr($file,0,strpos($file,'.'));
}
}
}
else
{
$dh = opendir(PHPGW_SERVER_ROOT .
'/phpgwapi/themes');
while ($file = readdir($dh))
{
if (eregi("\.theme$", $file))
{
$list[] =
substr($file,0,strpos($file,'.'));
}
}
}
closedir($dh);
reset ($list);
return $list;
}
/**
* List available templates
*
* @return array Alphabetically sorted list of available
templates
*/
function list_templates()
{
$d = dir(PHPGW_SERVER_ROOT . '/phpgwapi/templates');
while ($entry=$d->read())
{
if ($entry != 'CVS' && $entry != '.' && $entry
!= '..'
&& $entry != 'phpgw_website' && $entry
!= 'default'
&& $entry != 'base'
&& is_dir(PHPGW_SERVER_ROOT .
'/phpgwapi/templates/' . $entry))
{
$list[$entry]['name'] = $entry;
$f = PHPGW_SERVER_ROOT .
'/phpgwapi/templates/' . $entry . '/details.inc.php';
if (file_exists ($f))
{
include($f);
$list[$entry]['title'] = 'Use
'.$GLOBALS['phpgw_info']['template'][$entry]['title'].'interface';
}
else
{
$list[$entry]['title'] = $entry;
}
}
}
$d->close();
ksort($list);
return $list;
}
/**
* Get template dir of an application
*
* @param string $appname appication name optional can be
derived from $phpgw_info['flags']['currentapp'];
* @param string? $layout ?????
*/
function get_tpl_dir($appname = '',$layout = '')
{
if (! $appname)
{
$appname =
$GLOBALS['phpgw_info']['flags']['currentapp'];
}
if ($appname == 'home' || $appname == 'logout' ||
$appname == 'login' || $appname == 'about' || $appname == 'help')
{
$appname = 'phpgwapi';
}
if
(!isset($GLOBALS['phpgw_info']['server']['template_set']) &&
isset($GLOBALS['phpgw_info']['user']['preferences']['common']['template_set']))
{
$GLOBALS['phpgw_info']['server']['template_set'] =
$GLOBALS['phpgw_info']['user']['preferences']['common']['template_set'];
}
// Setting this for display of template choices in user
preferences
if (@$GLOBALS['phpgw_info']['server']['template_set']
== 'user_choice')
{
$GLOBALS['phpgw_info']['server']['usrtplchoice'] = 'user_choice';
}
if ((@$GLOBALS['phpgw_info']['server']['template_set']
== 'user_choice' ||
!isset($GLOBALS['phpgw_info']['server']['template_set'])) &&
isset($GLOBALS['phpgw_info']['user']['preferences']['common']['template_set']))
{
$GLOBALS['phpgw_info']['server']['template_set'] =
$GLOBALS['phpgw_info']['user']['preferences']['common']['template_set'];
}
elseif
(@$GLOBALS['phpgw_info']['server']['template_set'] == 'user_choice' ||
!isset($GLOBALS['phpgw_info']['server']['template_set']))
{
$GLOBALS['phpgw_info']['server']['template_set'] = 'simple';
}
$tpldir = PHPGW_SERVER_ROOT . '/' . $appname .
'/templates/' . $GLOBALS['phpgw_info']['server']['template_set'];
$tpldir_default = PHPGW_SERVER_ROOT . '/' . $appname .
'/templates/simple';
if ($layout == 'simple')
{
$tpldir = $tpldir_default;
}
if (@is_dir($tpldir))
{
return $tpldir;
}
elseif (@is_dir($tpldir_default))
{
return $tpldir_default;
}
else
{
return False;
}
}
/**
* Test if image directory exists and has more than just a
navbar-icon
*
* @param string $dir Image directory
* @return boolean True when it is an image directory, otherwise
false.
* @internal This is just a workaround for idots, better to use
find_image, which has a fallback on a per image basis to the default dir
*/
function is_image_dir($dir)
{
if (address@hidden($dir))
{
return False;
}
if ($d = opendir($dir))
{
while ($f = readdir($d))
{
$ext = strtolower(strrchr($f,'.'));
if ( $ext == '.png' &&
strstr($f,'navbar') === False)
{
return True;
}
}
}
return False;
}
/**
* Get image directory of an application
*
* @param string $appname Application name, defaults to
$phpgw_info['flags']['currentapp']
* @return string|boolean Image directory of given application
or false
*/
function get_image_dir($appname = '')
{
if ($appname == '')
{
$appname =
$GLOBALS['phpgw_info']['flags']['currentapp'];
}
if
(empty($GLOBALS['phpgw_info']['server']['template_set']))
{
$GLOBALS['phpgw_info']['server']['template_set'] = 'simple';
}
$imagedir = PHPGW_SERVER_ROOT . '/' .
$appname . '/templates/'
.
$GLOBALS['phpgw_info']['server']['template_set'] . '/images';
$imagedir_default = PHPGW_SERVER_ROOT . '/' .
$appname . '/templates/base/images';
$imagedir_olddefault = PHPGW_SERVER_ROOT . '/' .
$appname . '/images';
if ($this->is_image_dir ($imagedir))
{
return $imagedir;
}
elseif ($this->is_image_dir ($imagedir_default))
{
return $imagedir_default;
}
elseif ($this->is_image_dir ($imagedir_olddefault))
{
return $imagedir_olddefault;
}
else
{
return False;
}
}
/**
* Get image path of an application
*
* @param string $appname Appication name, defaults to
$phpgw_info['flags']['currentapp']
* @return string|boolean Image directory path of given
application or false
*/
function get_image_path($appname = '')
{
if ($appname == '')
{
$appname =
$GLOBALS['phpgw_info']['flags']['currentapp'];
}
if
(empty($GLOBALS['phpgw_info']['server']['template_set']))
{
$GLOBALS['phpgw_info']['server']['template_set'] = 'simple';
}
$imagedir = PHPGW_SERVER_ROOT .
'/'.$appname.'/templates/'.$GLOBALS['phpgw_info']['server']['template_set'].'/images';
$imagedir_default = PHPGW_SERVER_ROOT .
'/'.$appname.'/templates/base/images';
$imagedir_olddefault = PHPGW_SERVER_ROOT .
'/'.$appname.'/images';
if ($this->is_image_dir ($imagedir))
{
return
$GLOBALS['phpgw_info']['server']['webserver_url'].'/'.$appname.'/templates/'.$GLOBALS['phpgw_info']['server']['template_set'].'/images';
}
elseif ($this->is_image_dir ($imagedir_default))
{
return
$GLOBALS['phpgw_info']['server']['webserver_url'].'/'.$appname.'/templates/base/images';
}
elseif ($this->is_image_dir ($imagedir_olddefault))
{
return
$GLOBALS['phpgw_info']['server']['webserver_url'].'/'.$appname.'/images';
}
else
{
return False;
}
}
function find_image($appname,$image)
{
if (address@hidden($this->found_files[$appname]))
{
$imagedir_olddefault = '/'.$appname.'/images';
$imagedir_default =
'/'.$appname.'/templates/base/images';
$imagedir =
'/'.$appname.'/templates/'.$GLOBALS['phpgw_info']['server']['template_set'].'/images';
if
(@is_dir(PHPGW_INCLUDE_ROOT.$imagedir_olddefault))
{
$d =
dir(PHPGW_INCLUDE_ROOT.$imagedir_olddefault);
while (false != ($entry = $d->read()))
{
if ($entry != '.' && $entry !=
'..')
{
$this->found_files[$appname][$entry] = $imagedir_olddefault;
}
}
$d->close();
}
if
(@is_dir(PHPGW_INCLUDE_ROOT.$imagedir_default))
{
$d =
dir(PHPGW_INCLUDE_ROOT.$imagedir_default);
while (false != ($entry = $d->read()))
{
if ($entry != '.' && $entry !=
'..')
{
$this->found_files[$appname][$entry] = $imagedir_default;
}
}
$d->close();
}
if (@is_dir(PHPGW_INCLUDE_ROOT.$imagedir))
{
$d = dir(PHPGW_INCLUDE_ROOT.$imagedir);
while (false != ($entry = $d->read()))
{
if ($entry != '.' && $entry !=
'..')
{
$this->found_files[$appname][$entry] = $imagedir;
}
}
$d->close();
}
}
if(isset($this->found_files[$appname][$image.'.png']))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files[$appname][$image.'.png'].'/'.$image.'.png';
}
elseif(isset($this->found_files[$appname][$image.'.jpg']))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files[$appname][$image.'.jpg'].'/'.$image.'.jpg';
}
elseif(isset($this->found_files[$appname][$image]))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files[$appname][$image].'/'.$image;
}
elseif(isset($this->found_files['phpgwapi'][$image.'.png']))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files['phpgwapi'][$image.'.png'].'/'.$image.'.png';
}
elseif(isset($this->found_files['phpgwapi'][$image.'.jpg']))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files['phpgwapi'][$image.'.jpg'].'/'.$image.'.jpg';
}
elseif(isset($this->found_files['phpgwapi'][$image]))
{
$imgfile =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files['phpgwapi'][$image].'/'.$image;
}
else
{
$imgfile = '';
}
return $imgfile;
}
function image($appname,$image='',$ext='',$use_lang=True)
{
if (!is_array($image))
{
if (empty($image))
{
return '';
}
$image = array($image);
}
if ($use_lang)
{
foreach($image as $img)
{
$lang_images[] = $img . '_' .
$GLOBALS['phpgw_info']['user']['preferences']['common']['lang'];
$lang_images[] = $img;
}
$image = $lang_images;
}
if($image_found)
{
return $image_found;
}
foreach($image as $img)
{
if(isset($this->found_files[$appname][$img.$ext]))
{
$image_found =
$GLOBALS['phpgw_info']['server']['webserver_url'].$this->found_files[$appname][$img.$ext].'/'.$img.$ext;
}
else
{
$image_found =
$this->find_image($appname,$img.$ext);
}
}
return $image_found;
}
function image_on($appname,$image,$extension='_on')
{
$with_extension =
$this->image($appname,$image,$extension);
$without_extension = $this->image($appname,$image);
if($with_extension != '')
{
return $with_extension;
}
elseif($without_extension != '')
{
return $without_extension;
}
else
{
return '';
}
}
function navbar()
{
$GLOBALS['phpgw_info']['navbar']['home']['title'] =
'Home';
$GLOBALS['phpgw_info']['navbar']['home']['url'] =
$GLOBALS['phpgw']->link('/home.php');
$GLOBALS['phpgw_info']['navbar']['home']['icon'] =
$this->image('phpgwapi',Array('home','nonav'));
$GLOBALS['phpgw_info']['navbar']['home']['icon_hover']
= $this->image_on('phpgwapi',Array('home','nonav'),'-over');
list($first) =
each($GLOBALS['phpgw_info']['user']['apps']);
if(is_array($GLOBALS['phpgw_info']['user']['apps']['admin']) && $first !=
'admin')
{
$newarray['admin'] =
$GLOBALS['phpgw_info']['user']['apps']['admin'];
foreach($GLOBALS['phpgw_info']['user']['apps']
as $index => $value)
{
if($index != 'admin')
{
$newarray[$index] = $value;
}
}
$GLOBALS['phpgw_info']['user']['apps'] =
$newarray;
reset($GLOBALS['phpgw_info']['user']['apps']);
}
unset($index);
unset($value);
unset($newarray);
foreach($GLOBALS['phpgw_info']['user']['apps'] as $app
=> $data)
{
if (is_long($app))
{
continue;
}
if ($app == 'preferences' ||
$GLOBALS['phpgw_info']['apps'][$app]['status'] != 2 &&
$GLOBALS['phpgw_info']['apps'][$app]['status'] != 3)
{
$GLOBALS['phpgw_info']['navbar'][$app]['title'] =
$GLOBALS['phpgw_info']['apps'][$app]['title'];
$GLOBALS['phpgw_info']['navbar'][$app]['url'] = $GLOBALS['phpgw']->link('/' .
$app . '/index.php');
$GLOBALS['phpgw_info']['navbar'][$app]['name'] = $app;
if ($app !=
$GLOBALS['phpgw_info']['flags']['currentapp'])
{
$GLOBALS['phpgw_info']['navbar'][$app]['icon'] =
$this->image($app,Array('navbar','nonav'));
$GLOBALS['phpgw_info']['navbar'][$app]['icon_hover'] =
$this->image_on($app,Array('navbar','nonav'),'-over');
}
else
{
$GLOBALS['phpgw_info']['navbar'][$app]['icon'] =
$this->image_on($app,Array('navbar','nonav'),'-over');
$GLOBALS['phpgw_info']['navbar'][$app]['icon_hover'] =
$this->image($app,Array('navbar','nonav'));
}
//
if($GLOBALS['phpgw_info']['navbar'][$app]['icon'] == '')
// {
//
$GLOBALS['phpgw_info']['navbar'][$app]['icon'] =
$this->image('phpgwapi','nonav');
// }
}
}
if ($GLOBALS['phpgw_info']['flags']['currentapp'] ==
'home' || $GLOBALS['phpgw_info']['flags']['currentapp'] == 'preferences' ||
$GLOBALS['phpgw_info']['flags']['currentapp'] == 'about')
{
$app = $app_title = 'phpGroupWare';
}
else
{
$app =
$GLOBALS['phpgw_info']['flags']['currentapp'];
$app_title =
$GLOBALS['phpgw_info']['apps'][$app]['title'];
}
if
($GLOBALS['phpgw_info']['user']['apps']['preferences']) // preferences last
{
$prefs =
$GLOBALS['phpgw_info']['navbar']['preferences'];
unset($GLOBALS['phpgw_info']['navbar']['preferences']);
$GLOBALS['phpgw_info']['navbar']['preferences']
= $prefs;
}
// We handle this here becuase its special
$GLOBALS['phpgw_info']['navbar']['about']['title'] =
lang('About %1',$app_title);
$GLOBALS['phpgw_info']['navbar']['about']['url'] =
$GLOBALS['phpgw']->link('/about.php','app='.$app);
$GLOBALS['phpgw_info']['navbar']['about']['icon'] =
$this->image('phpgwapi',Array('about','nonav'));
$GLOBALS['phpgw_info']['navbar']['about']['icon_hover']
= $this->image_on('phpgwapi',Array('about','nonav'),'-over');
$GLOBALS['phpgw_info']['navbar']['logout']['title'] =
'Logout';
$GLOBALS['phpgw_info']['navbar']['logout']['url'] =
$GLOBALS['phpgw']->link('/logout.php');
$GLOBALS['phpgw_info']['navbar']['logout']['icon'] =
$this->image('phpgwapi',Array('logout','nonav'));
$GLOBALS['phpgw_info']['navbar']['logout']['icon_hover'] =
$this->image_on('phpgwapi',Array('logout','nonav'),'-over');
}
/**
* Load header.inc.php for an application
*/
function app_header()
{
if (file_exists(PHPGW_APP_INC . '/header.inc.php'))
{
include(PHPGW_APP_INC . '/header.inc.php');
}
}
/**
* Load the phpgw header
*/
function phpgw_header()
{
include(PHPGW_INCLUDE_ROOT . '/phpgwapi/templates/' .
$GLOBALS['phpgw_info']['server']['template_set']
. '/head.inc.php');
$this->navbar(False);
include(PHPGW_INCLUDE_ROOT . '/phpgwapi/templates/' .
$GLOBALS['phpgw_info']['server']['template_set']
. '/navbar.inc.php');
if (address@hidden'phpgw_info']['flags']['nonavbar'] &&
address@hidden'phpgw_info']['flags']['navbar_target'])
{
echo parse_navbar();
}
}
function phpgw_footer()
{
if (!defined('PHPGW_FOOTER'))
{
define('PHPGW_FOOTER',True);
if
(!isset($GLOBALS['phpgw_info']['flags']['nofooter']) ||
!$GLOBALS['phpgw_info']['flags']['nofooter'])
{
include(PHPGW_API_INC .
'/footer.inc.php');
}
}
}
/**
* Include CSS in template header
*
* This first loads up the basic global CSS definitions, which
support
* the selected user theme colors. Next we load up the app CSS.
This is
* all merged into the selected theme's css.tpl file.
*
* @author Dave Hall skwashd at phpgroupware.org
* @return string Template including CSS definitions
*/
function get_css()
{
$tpl = createObject('phpgwapi.Template',
$this->get_tpl_dir('phpgwapi'));
$tpl->set_file('css', 'css.tpl');
$tpl->set_var($GLOBALS['phpgw_info']['theme']);
$app_css = '';
if(@isset($GLOBALS['phpgw_info']['menuaction']))
{
list($app,$class,$method) =
explode('.',$GLOBALS['phpgw_info']['menuaction']);
if(is_array($GLOBALS[$class]->public_functions)
&&
$GLOBALS[$class]->public_functions['css'])
{
$app_css .= $GLOBALS[$class]->css();
}
}
if (isset($GLOBALS['phpgw_info']['flags']['css']))
{
$app_css .=
$GLOBALS['phpgw_info']['flags']['css'];
}
$tpl->set_var('app_css', $app_css);
return $tpl->subst('css');
}
/**
* Backwards compatibility method
* @see get_javascript
*/
function get_java_script()
{
return $this->get_javascript();
}
/**
* Include JavaScript in template header
*
* The method is included here to make it easier to change the
js support
* in phpgw. One change then all templates will support it (as
long as they
* include a call to this method).
*
* @author Dave Hall skwashd at phpgroupware.org
* @return string The JavaScript code to include
*/
function get_javascript()
{
$java_script = '';
if(@is_object($GLOBALS['phpgw']->js))
{
$java_script .=
$GLOBALS['phpgw']->js->get_script_links();
}
if(@isset($GLOBALS['phpgw_info']['menuaction']))
{
list($app,$class,$method) =
explode('.',$GLOBALS['phpgw_info']['menuaction']);
if(is_array($GLOBALS[$class]->public_functions)
&&
$GLOBALS[$class]->public_functions['java_script'])
{
$java_script .=
$GLOBALS[$class]->java_script();
}
}
//you never know - best to protect the stupid ;)
if
(isset($GLOBALS['phpgw_info']['flags']['java_script']))
{
$java_script .=
$GLOBALS['phpgw_info']['flags']['java_script'] . "\n";
}
return $java_script;
}
/**
* Get on(un)load attributes from javascript class
*
* @author Dave Hall skwashd at phpgroupware.org
* @return string Body attributes or empty
*/
function get_body_attribs()
{
if(@is_object($GLOBALS['phpgw']->js))
{
return
$GLOBALS['phpgw']->js->get_body_attribs();
}
else
{
return '';
}
}
function hex2bin($data)
{
$len = strlen($data);
return @pack('H' . $len, $data);
}
/**
* Encrypt data
*
* @param string $data Data to be encrypted
* @return string Encrypted data
*/
function encrypt($data)
{
return $GLOBALS['phpgw']->crypto->encrypt($data);
}
/**
* Decrypt data
* @param string $data Data to be decrypted
* @return string Decrypted data
*/
function decrypt($data)
{
return $GLOBALS['phpgw']->crypto->decrypt($data);
}
/**
* DES encrypt a password
*
* @param string $userpass User password
* @param string $random Random seed
* @return string DES encrypted password
*/
function des_cryptpasswd($userpass, $random)
{
$lcrypt = '{crypt}';
$password = crypt($userpass, $random);
$ldappassword = sprintf('%s%s', $lcrypt, $password);
return $ldappassword;
}
/**
* MD5 encrypt password
*
* @param string $userpass User password
* @param string $random Random seed
* @return string MD5 encrypted password
*/
function md5_cryptpasswd($userpass, $random)
{
$bsalt = '$1$';
$esalt = '$';
$lcrypt = '{crypt}';
$modsalt = sprintf('%s%s%s', $bsalt, $random, $esalt);
$password = crypt($userpass, $modsalt);
$ldappassword = sprintf('%s%s', $lcrypt, $password);
return $ldappassword;
}
/**
* Encrypt password based on encryption type set in setup
*
* @param string $password Password to encrypt
* @return Encrypted password or false
*/
function encrypt_password($password)
{
if
(strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']) == 'des')
{
$salt = $this->randomstring(2);
$e_password = $this->des_cryptpasswd($password,
$salt);
return $e_password;
}
elseif
(strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']) == 'md5')
{
$salt = $this->randomstring(8);
$e_password = $this->md5_cryptpasswd($password,
$salt);
return $e_password;
}
return false;
}
/**
* Find the current position of the application in the users
portal_order preference
*
* @param integer $app Application id to find current position
* @return integer Applications position or -1
*/
function find_portal_order($app)
{
if(!is_array($GLOBALS['phpgw_info']['user']['preferences']['portal_order']))
{
return -1;
}
foreach($GLOBALS['phpgw_info']['user']['preferences']['portal_order'] as $seq
=> $appid)
{
if($appid == $app)
{
@reset($GLOBALS['phpgw_info']['user']['preferences']['portal_order']);
return $seq;
}
}
@reset($GLOBALS['phpgw_info']['user']['preferences']['portal_order']);
return -1;
}
/**
* Wrapper to the session->appsession()
*
* @param string $data Data
* @return mixed Result of
$GLOBALS['phpgw']->session->appsession()
* @deprecated
*/
function appsession($data = '##NOTHING##')
{
echo 'common::appsession() is a depreciated function'
. ' - use session::appsession() instead';
return
$GLOBALS['phpgw']->session->appsession('default','',$data);
}
/**
* Show current date
*
* @param integer $t Time, defaults to user preferences
* @param string $format Date format, defaults to user
preferences
* @return string Formated date
*/
function show_date($t = '', $format = '')
{
if(!is_object($GLOBALS['phpgw']->datetime))
{
$GLOBALS['phpgw']->datetime =
createobject('phpgwapi.datetime');
}
if (!$t || intval($t) <= 0)
{
$t = $GLOBALS['phpgw']->datetime->gmtnow;
}
// + (date('I') == 1?3600:0)
$t += $GLOBALS['phpgw']->datetime->tz_offset;
if (! $format)
{
$format =
$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'] . ' - ';
if
($GLOBALS['phpgw_info']['user']['preferences']['common']['timeformat'] == '12')
{
$format .= 'h:i a';
}
else
{
$format .= 'H:i';
}
}
return date($format,$t);
}
/**
*
*
* @param string $yearstr Year
* @param string $monthstr Month
* @param string $day Day
* @param boolean $add_seperator Use separator, defaults to space
* @return string Formatted date
*/
function
dateformatorder($yearstr,$monthstr,$daystr,$add_seperator = False)
{
$dateformat =
strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
$sep =
substr($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'],1,1);
$dlarr[strpos($dateformat,'y')] = $yearstr;
$dlarr[strpos($dateformat,'m')] = $monthstr;
$dlarr[strpos($dateformat,'d')] = $daystr;
ksort($dlarr);
if ($add_seperator)
{
return (implode($sep,$dlarr));
}
else
{
return (implode(' ',$dlarr));
}
}
/**
* Format the time takes settings from user preferences
*
* @param integer $hour Hour
* @param integer $min Minute
* @param integer $sec Second
* @return string Time formatted as hhmmss with am/pm
*/
function formattime($hour,$min,$sec='')
{
$h12 = $hour;
if
($GLOBALS['phpgw_info']['user']['preferences']['common']['timeformat'] == '12')
{
if ($hour >= 12)
{
$ampm = ' pm';
}
else
{
$ampm = ' am';
}
$h12 %= 12;
if ($h12 == 0 && $hour)
{
$h12 = 12;
}
if ($h12 == 0 && !$hour)
{
$h12 = 0;
}
}
else
{
$h12 = $hour;
}
if ($sec)
{
$sec = ":$sec";
}
return "$h12:$min$sec$ampm";
}
/**
* Create email preferences
*
* @param mixed $prefs Unused
* @param integer $account_id Account id, defaults to
phpgw_info['user']['account_id']
* @internal This is not the best place for it, but it needs to
be shared between Aeromail and SM
*/
function create_emailpreferences($prefs='',$accountid='')
{
return
$GLOBALS['phpgw']->preferences->create_email_preferences($accountid);
// Create the email Message Class if needed
if (is_object($GLOBALS['phpgw']->msg))
{
$do_free_me = False;
}
else
{
$GLOBALS['phpgw']->msg =
CreateObject('email.mail_msg');
$do_free_me = True;
}
// this sets the preferences into the phpgw_info
structure
$GLOBALS['phpgw']->msg->create_email_preferences();
// cleanup and return
if ($do_free_me)
{
unset ($GLOBALS['phpgw']->msg);
}
}
/**
* Convert application code to HTML text message
*
* @param integer $code Code number to convert into HTML string
* @return string HTML string with code check result message
* @internal This will be moved into the applications area
*/
function check_code($code)
{
$s = '<br />';
switch ($code)
{
case 13: $s .= lang('Your message has
been sent');break;
case 14: $s .= lang('New entry added
sucessfully');break;
case 15: $s .= lang('Entry updated
sucessfully'); break;
case 16: $s .= lang('Entry has been
deleted sucessfully'); break;
case 18: $s .= lang('Password has been
updated'); break;
case 38: $s .= lang('Password could not
be changed'); break;
case 19: $s .= lang('Session has been
killed'); break;
case 27: $s .= lang('Account has been
updated'); break;
case 28: $s .= lang('Account has been
created'); break;
case 29: $s .= lang('Account has been
deleted'); break;
case 30: $s .= lang('Your settings have
been updated'); break;
case 31: $s .= lang('Group has been
added'); break;
case 32: $s .= lang('Group has been
deleted'); break;
case 33: $s .= lang('Group has been
updated'); break;
case 34: $s .= lang('Account has been
deleted') . '<p>'
. lang('Error deleting %1 %2
directory',lang('users'),' '.lang('private').' ')
. ',<br />' . lang('Please %1
by hand',lang('delete')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br />' . lang('permissions
to the files/users directory')
. '<br />' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/users/');
break;
case 35: $s .= lang('Account has been
updated') . '<p>'
. lang('Error renaming %1 %2
directory',lang('users'),
' '.lang('private').' ')
. ',<br />' . lang('Please %1
by hand',
lang('rename')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br>' . lang('permissions to
the files/users directory')
. '<br>' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/users/');
break;
case 36: $s .= lang('Account has been
created') . '<p>'
. lang('Error creating %1 %2
directory',lang('users'),
' '.lang('private').' ')
. ',<br />' . lang('Please %1
by hand',
lang('create')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br />' . lang('permissions
to the files/users directory')
. '<br />' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/users/');
break;
case 37: $s .= lang('Group has been
added') . '<p>'
. lang('Error creating %1 %2
directory',lang('groups'),' ')
. ',<br />' . lang('Please %1
by hand',
lang('create')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br />' . lang('permissions
to the files/users directory')
. '<br />' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/groups/');
break;
case 38: $s .= lang('Group has been
deleted') . '<p>'
. lang('Error deleting %1 %2
directory',lang('groups'),' ')
. ',<br />' . lang('Please %1
by hand',
lang('delete')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br />' . lang('permissions
to the files/users directory')
. '<br />' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/groups/');
break;
case 39: $s .= lang('Group has been
updated') . '<p>'
. lang('Error renaming %1 %2
directory',lang('groups'),' ')
. ',<br />' . lang('Please %1
by hand',
lang('rename')) . '<br /><br />'
. lang('To correct this error
for the future you will need to properly set the')
. '<br />' . lang('permissions
to the files/users directory')
. '<br />' . lang('On *nix
systems please type: %1','chmod 770 '
.
$GLOBALS['phpgw_info']['server']['files_dir'] . '/groups/');
break;
case 40: $s .= lang('You have not entered a
title').'.';
break;
case 41: $s .= lang('You have not entered a
valid time of day').'.';
break;
case 42: $s .= lang('You have not entered a
valid date').'.';
break;
case 43: $s .= lang('You have not entered
participants').'.';
break;
default: return '';
}
return $s;
}
/**
* Process error message
*
* @param string $error Error message
* @param integer $line Line number of error
* @param string $file Filename in which the error occured
*/
function phpgw_error($error,$line = '', $file = '')
{
echo '<p><strong>phpGroupWare internal
error:</strong><p>'.$error;
if ($line)
{
echo 'Line: '.$line;
}
if ($file)
{
echo 'File: '.$file;
}
echo '<p>Your session has been halted.';
exit;
}
/**
* Display a list of core functions in the API
*
* @internal Works on systems with grep only
*/
function debug_list_core_functions()
{
echo 'common::debug_list_core_functions() is deprecated
- no output generated!<br />';
}
/**
* Get the next higher value for an integer and increment it in
the database
*
* @param string $appname Application name to get an id for
* @param integer $min Minimum of id range
* @param integer $max Maximum of id range
* @return integer|boolean Next available id or false
*/
function next_id($appname,$min=0,$max=0)
{
if (!$appname)
{
return -1;
}
$GLOBALS['phpgw']->db->query("SELECT id FROM
phpgw_nextid WHERE appname='".$appname."'",__LINE__,__FILE__);
while( $GLOBALS['phpgw']->db->next_record() )
{
$id = $GLOBALS['phpgw']->db->f('id');
}
if (empty($id) || !$id)
{
$id = 1;
$GLOBALS['phpgw']->db->query("INSERT INTO
phpgw_nextid (appname,id) VALUES ('".$appname."',".$id.")",__LINE__,__FILE__);
}
elseif($id<$min)
{
$id = $min;
$GLOBALS['phpgw']->db->query("UPDATE
phpgw_nextid SET id=".$id." WHERE appname='".$appname."'",__LINE__,__FILE__);
}
elseif ($max && ($id > $max))
{
return False;
}
else
{
$id = $id + 1;
$GLOBALS['phpgw']->db->query("UPDATE
phpgw_nextid SET id=".$id." WHERE appname='".$appname."'",__LINE__,__FILE__);
}
return intval($id);
}
/**
* Get the current id in the next_id table for a particular
application/class
*
* @param string $appname Application name to get the id for
* @param integer $min Minimum of id range
* @param integer $max Maximum of id range
* @return integer|boolean Last used id or false
*/
function last_id($appname,$min=0,$max=0)
{
if (!$appname)
{
return -1;
}
$GLOBALS['phpgw']->db->query("SELECT id FROM
phpgw_nextid WHERE appname='".$appname."'",__LINE__,__FILE__);
while( $GLOBALS['phpgw']->db->next_record() )
{
$id = $GLOBALS['phpgw']->db->f('id');
}
if (empty($id) || !$id)
{
if($min)
{
$id = $min;
}
else
{
$id = 1;
}
$GLOBALS['phpgw']->db->query("INSERT INTO
phpgw_nextid (appname,id) VALUES ('".$appname."',".$id.")",__LINE__,__FILE__);
}
elseif($id<$min)
{
$id = $min;
$GLOBALS['phpgw']->db->query("UPDATE
phpgw_nextid SET id=".$id." WHERE appname='".$appname."'",__LINE__,__FILE__);
}
elseif ($max && ($id > $max))
{
return False;
}
else
{
return intval($id);
}
}
function start_xslt_capture()
{
if (!isset($GLOBALS['phpgw_info']['xslt_capture']))
{
$GLOBALS['phpgw_info']['xslt_capture'] = True;
ob_start(); // capture the output
}
}
/* Note: need to be run BEFORE exit is called, as buffers get
flushed automatically before
* any registered shutdown-functions (eg. phpgw_footer)
gets called
*/
function stop_xslt_capture()
{
if (isset($GLOBALS['phpgw_info']['xslt_capture']))
{
unset($GLOBALS['phpgw_info']['xslt_capture']);
$output = ob_get_contents(); // get captured
output
ob_end_clean();
// stop capture and clean output-buffer
if (!empty($output))
{
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('body_data' => $output));
}
}
}
/**
* Generate a consistant msgbox for app apps to use
* makes it easier and more consistant to generate message boxes
*
* @param string $text ???
* @param bool $type ???
* @param string $base ???
* @returns ????
*/
function msgbox($text = '', $type = True, $base = '')
{
if ($text=='' &&
@isset($GLOBALS['phpgw_info']['flags']['msgbox_data']))
{
$text =
$GLOBALS['phpgw_info']['flags']['msgbox_data'];
unset($GLOBALS['phpgw_info']['flags']['msgbox_data']);
}
elseif($text=='')
{
return;
}
$GLOBALS['phpgw']->xslttpl->add_file($this->get_tpl_dir('phpgwapi','default') .
SEP . 'msgbox');
$prev_helper =
$GLOBALS['phpgw']->translation->translator_helper;
$GLOBALS['phpgw']->translation->translator_helper = '';
if (is_array($text))
{
foreach($text as $key => $value)
{
if ($value == True)
{
$img =
$this->image('phpgwapi','msgbox_good');
$alt = lang('OK');
}
else
{
$img =
$this->image('phpgwapi','msgbox_bad');
$alt = lang('ERROR');
}
$data[] = array
(
'msgbox_text'
=> lang($key),
'msgbox_img'
=> $img,
'msgbox_img_alt'
=> $alt,
'lang_msgbox_statustext'
=> $alt
);
}
}
else
{
if ($type == True)
{
$img =
$this->image('phpgwapi','msgbox_good');
$alt = lang('OK');
}
else
{
$img =
$this->image('phpgwapi','msgbox_bad');
$alt = lang('ERROR');
}
$data = array
(
'msgbox_text'
=> lang($text),
'msgbox_img'
=> $img,
'msgbox_img_alt'
=> $alt,
'lang_msgbox_statustext' => $alt
);
}
$GLOBALS['phpgw']->translation->translator_helper =
$prev_helper;
if ($base)
{
$GLOBALS['phpgw']->xslttpl->set_var($base,array('msgbox_data' => $data),True);
}
else
{
return $data;
}
}
}
?>
- [Phpgroupware-cvs] phpgwapi/inc/class.common.inc.php, 1.221,
nomail <=