* The $items, $blogs, ... arrays map an id to an object (for plugins, the name is used\r
* rather than an ID)\r
*/\r
- var $items;\r
- var $blogs;\r
- var $plugins;\r
- var $karma;\r
- var $templates;\r
- var $members;\r
+ private $items;\r
+ private $blogs;\r
+ private $plugins;\r
+ private $karma;\r
+ private $templates;\r
+ private $members;\r
\r
/**\r
* cachedInfo to avoid repeated SQL queries (see pidInstalled/pluginInstalled/getPidFromName)\r
/**\r
* Returns the requested item object. If it is not in the cache, it will\r
* first be loaded and then placed in the cache.\r
- * Intended use: $item =& $manager->getItem(1234)\r
+ * Intended use: $item =& $manager->getItem(1234, 0, 0)\r
*/\r
public function &getItem($itemid, $allowdraft, $allowfuture)\r
{\r
$item =& $this->items[$itemid];\r
\r
- // check the draft and future rules if the item was already cached\r
- if ( $item )\r
+ /* confirm to cached */\r
+ if ( !array_key_exists($itemid, $this->items) )\r
{\r
- if ( (!$allowdraft) && ($item['draft']) )\r
- {\r
- return 0;\r
- }\r
- \r
- $blog =& $this->getBlog(getBlogIDFromItemID($itemid));\r
- \r
- if ( (!$allowfuture) && ($item['timestamp'] > $blog->getCorrectTime()) )\r
- {\r
- return 0;\r
- }\r
- }\r
- \r
- if ( !$item )\r
- {\r
- // load class if needed\r
$this->loadClass('ITEM');\r
- // load item object\r
$item = Item::getitem($itemid, $allowdraft, $allowfuture);\r
$this->items[$itemid] = $item;\r
}\r
+ \r
+ $item =& $this->items[$itemid];\r
+ if ( !$allowdraft && ($item['draft']) )\r
+ {\r
+ return 0;\r
+ }\r
+ \r
+ $blog =& $this->getBlog($item['blogid']);\r
+ if ( !$allowfuture && ($item['timestamp'] > $blog->getCorrectTime()) )\r
+ {\r
+ return 0;\r
+ }\r
+ \r
return $item;\r
}\r
\r
}\r
\r
/**\r
+ * Manager::getPluginNameFromPid()\r
+ * \r
+ * @param string $pid ID for plugin\r
+ * @return string name of plugin\r
+ */\r
+ public function getPluginNameFromPid($pid)\r
+ {\r
+ if ( !array_key_exists($pid, $this->cachedInfo['installedPlugins']) )\r
+ {\r
+ $query = 'SELECT pfile FROM %s WHERE pid=%d;';\r
+ $query = sprintf($query, sql_table('plugin'), (integer) $pid);\r
+ return DB::getValue($query);\r
+ }\r
+ return $this->cachedInfo['installedPlugins'][$pid];\r
+ }\r
+ \r
+ /**\r
* Manager::getUpperCaseName()\r
* Retrieve the name of a plugin in the right capitalisation\r
* \r
}\r
\r
/**\r
+ * Manager::getNumberOfSubscribers()\r
+ * \r
+ * @param string $event name of events\r
+ * @return integer number of event subscriber\r
+ */\r
+ public function getNumberOfSubscribers($event)\r
+ {\r
+ $query = 'SELECT COUNT(*) as count FROM %s WHERE event=%s;';\r
+ $query = sprintf($query, sql_table('plugin_event'), DB::quoteValue($event));\r
+ return (integer) DB::getValue($query);\r
+ }\r
+ \r
+ /**\r
* Manager::addTicketToUrl()\r
* GET requests: Adds ticket to URL (URL should NOT be html-encoded!, ticket is added at the end)\r
* \r
{\r
// remove tickets older than 1 hour\r
$oldTime = time() - 60 * 60;\r
- $query = "DELETE FROM %s WHERE ctime < '%s';";\r
- $query = sprintf($query, sql_table('tickets'), date('Y-m-d H:i:s',$oldTime));\r
+ $query = 'DELETE FROM %s WHERE ctime < %s';\r
+ $query = sprintf($query, sql_table('tickets'), DB::formatDateTime($oldTime));\r
DB::execute($query);\r
return;\r
}\r
$ticket = md5(uniqid(rand(), true));\r
\r
// add in database as non-active\r
- $query = "INSERT INTO %s (ticket, member, ctime)"\r
- . " VALUES (%s, %d, '%s');";\r
- $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, date('Y-m-d H:i:s',time()));\r
+ $query = 'INSERT INTO %s (ticket, member, ctime) VALUES (%s, %d, %s)';\r
+ $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, DB::formatDateTime());\r
\r
if ( DB::execute($query) !== FALSE )\r
{\r