added class OC_HOOK to base.php. It is in base.php because it is needed
very ofter and it is quite small.
This commit is contained in:
parent
e83d801c71
commit
d3502315bd
78
lib/base.php
78
lib/base.php
|
@ -280,20 +280,74 @@ class OC_UTIL {
|
|||
die($error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* check if we need to use the layout optimized for smaller screen, currently only checks for iPhone/Android
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasSmallScreen(){
|
||||
$userAgent=strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
if(strpos($userAgent,'android') or strpos($userAgent,'iphone') or strpos($userAgent,'ipod')){//todo, add support for more devices
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This class manages the hooks. It basically provides two functions: adding
|
||||
* slots and emitting signals.
|
||||
*/
|
||||
class OC_HOOK{
|
||||
static private $registered = array();
|
||||
|
||||
/**
|
||||
* @brief connects a function to a hook
|
||||
* @param $signalclass class name of emitter
|
||||
* @param $signalname name of signal
|
||||
* @param $slotclass class name of slot
|
||||
* @param $slotname name of slot
|
||||
* @returns true/false
|
||||
*
|
||||
* This function makes it very easy to connect to use hooks.
|
||||
*
|
||||
* TODO: write example
|
||||
*/
|
||||
public function connect( $signalclass, $signalname, $slotclass, $slotname ){
|
||||
// Cerate the data structure
|
||||
if( !array_key_exists( $signalclass, self::$registered )){
|
||||
self::$registered[$signalclass] = array();
|
||||
}
|
||||
if( !array_key_exists( $signalname, self::$registered[$signalclass] )){
|
||||
self::$registered[$signalclass][$signalname] = array();
|
||||
}
|
||||
|
||||
// register hook
|
||||
self::$registered[$signalclass][$signalname][] = array(
|
||||
"class" => $slotclass,
|
||||
"name" => $slotname );
|
||||
|
||||
// No chance for failure ;-)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief emitts a signal
|
||||
* @param $signalclass class name of emitter
|
||||
* @param $signalname name of signal
|
||||
* @param $params defautl: array() array with additional data
|
||||
* @returns true if slots exists or false if not
|
||||
*
|
||||
* Emits a signal. To get data from the slot use references!
|
||||
*
|
||||
* TODO: write example
|
||||
*/
|
||||
public function emit( $signalclass, $signalname, $params = array()){
|
||||
// Return false if there are no slots
|
||||
if( !array_key_exists( $signalclass, self::$registered )){
|
||||
return false;
|
||||
}
|
||||
if( !array_key_exists( $signalname, self::$registered[$signalclass] )){
|
||||
return false;
|
||||
}
|
||||
|
||||
// Call all slots
|
||||
foreach( $registered[$signalclass][$signalname] as $i ){
|
||||
call_user_func( array( $i["class"], $i["name"] ), $params );
|
||||
}
|
||||
|
||||
// return true
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Class for database access
|
||||
|
|
Loading…
Reference in New Issue