|
|
|
@ -280,21 +280,75 @@ 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; |
|
|
|
|
/** |
|
|
|
|
* 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; |
|
|
|
|
} |
|
|
|
|
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 |
|
|
|
|
* |
|
|
|
|