GetDb(); $variables = &$gCms->variables; if (!isset($variables['authorblobs'])) { $authorblobs = array(); // get the list of html blobs where this user is a direct owner $query = 'SELECT htmlblob_id FROM '.cms_db_prefix().'htmlblobs WHERE owner = ?'; $result = $db->GetCol($query,array($userid)); if( is_array($result) && count($result) ) { $authorblobs = $result; } // get the list of html blobs where this user is a direct additional editor. $query = "SELECT htmlblob_id FROM ".cms_db_prefix()."additional_htmlblob_users WHERE user_id = ?"; $result = $db->GetCol($query,array($userid)); if( is_array($result) && count($result) ) { $authorblobs = array_merge($authorblobs,$result); } // get the list of html blobs where this users member groups are listed as an additional editor // in additional_htmlblob_users groupid's are indicated with a negative value. $query = 'SELECT group_id FROM '.cms_db_prefix().'user_groups WHERE user_id = ?'; $result = $db->GetCol($query, array($userid)); if( is_array($result) && count($result) ) { for( $i = 0; $i < count($result); $i++ ) { $result[$i] = $result[$i] * -1; } $query = 'SELECT htmlblob_id FROM '.cms_db_prefix().'additional_htmlblob_users WHERE user_id IN ('; $query .= implode(',',$result).')'; $result = $db->GetCol($query); // overwrites $result if( is_array($result) && count($result) ) { $authorblobs = array_merge($authorblobs,$result); } } $authorblobs = array_unique($authorblobs); $variables['authorblobs'] = $authorblobs; } return $variables['authorblobs']; } /** * Loads all global content blocks from the database and returns them * * @return array The list of global content blocks */ function LoadHtmlBlobs() { $db = cmsms()->GetDb(); $result = array(); $query = "SELECT htmlblob_id, htmlblob_name, html, owner, modified_date, use_wysiwyg, description FROM ".cms_db_prefix()."htmlblobs ORDER BY htmlblob_name"; $dbresult = &$db->Execute($query); while (is_object($dbresult) && !$dbresult->EOF) { $oneblob = new GlobalContent(); $oneblob->id = $dbresult->fields['htmlblob_id']; $oneblob->name = $dbresult->fields['htmlblob_name']; $oneblob->content = $dbresult->fields['html']; $oneblob->owner = $dbresult->fields['owner']; $oneblob->description = $dbresult->fields['description']; $oneblob->use_wysiwyg = $dbresult->fields['use_wysiwyg']; $oneblob->modified_date = $db->UnixTimeStamp($dbresult->fields['modified_date']); $result[] = $oneblob; $dbresult->MoveNext(); } if( $dbresult ) $dbresult->Close(); return $result; } /** * Load a global content block by its database id * * @param string $id The id of the block to load * @return mixed If found, the global content block. If none is found, returns false. */ function &LoadHtmlBlobByID($id) { $result = false; $db = cmsms()->GetDb(); $query = "SELECT htmlblob_id, htmlblob_name, html, owner, modified_date, description, use_wysiwyg FROM ".cms_db_prefix()."htmlblobs WHERE htmlblob_id = ?"; $row = &$db->GetRow($query, array($id)); if ($row) { $oneblob = new GlobalContent(); $oneblob->id = $row['htmlblob_id']; $oneblob->name = $row['htmlblob_name']; $oneblob->content = $row['html']; $oneblob->owner = $row['owner']; $oneblob->description = $row['description']; $oneblob->use_wysiwyg = $row['use_wysiwyg']; $oneblob->modified_date = $db->UnixTimeStamp($row['modified_date']); return $oneblob; } return $result; } /** * Loads a global content block by its name * * @param string $name The name of the global content block to load * @return mixed If found, the global content block. If none is found, returns false. */ function &LoadHtmlBlobByName($name) { $result = false; $gCms = cmsms(); $db = $gCms->GetDb(); $gcbops = $gCms->GetGlobalContentOperations(); if (isset($this->_cache[$name])) { return $this->_cache[$name]; } $query = "SELECT htmlblob_id, htmlblob_name, html, owner, use_wysiwyg, description, modified_date FROM ".cms_db_prefix()."htmlblobs WHERE htmlblob_name = ?"; $row = $db->GetRow($query, array($name)); if ($row) { $result = new GlobalContent(); $result->id = $row['htmlblob_id']; $result->name = $row['htmlblob_name']; $result->content = $row['html']; $result->owner = $row['owner']; $result->use_wysiwyg = $row['use_wysiwyg']; $result->description = $row['description']; $result->modified_date = $db->UnixTimeStamp($row['modified_date']); if (!isset($this->_cache[$result->name])) { $this->_cache[$result->name] = $result; } } return $result; } /** * Given a global content object, creates a new global content block in the database with its attributes. * * @param mixed $htmlblob The global content object to store. * @return int Returns the id of the new object in the database. If failure, returns -1. */ function InsertHtmlBlob($htmlblob) { $result = -1; $db = cmsms()->GetDb(); $new_htmlblob_id = $db->GenID(cms_db_prefix()."htmlblobs_seq"); $time = $db->DBTimeStamp(time()); $query = "INSERT INTO ".cms_db_prefix()."htmlblobs (htmlblob_id, htmlblob_name, html, owner, use_wysiwyg, description, create_date, modified_date) VALUES (?,?,?,?,?,?,".$time.",".$time.")"; $dbresult = $db->Execute($query, array($new_htmlblob_id, $htmlblob->name, $htmlblob->content, $htmlblob->owner, $htmlblob->use_wysiwyg, $htmlblob->description)); if ($dbresult !== false) { $result = $new_htmlblob_id; } return $result; } /** * Given a global content object, updates that global content block in the database with its updated attributes. * * @param mixed $htmlblob The global content object to store. * @return boolean Returns true if successful, false if not. */ function UpdateHtmlBlob($htmlblob) { $result = false; $db = cmsms()->GetDb(); $time = $db->DBTimeStamp(time()); $query = "UPDATE ".cms_db_prefix()."htmlblobs SET htmlblob_name = ?, html = ?, owner = ?, use_wysiwyg = ?, description = ?, modified_date = ".$time." WHERE htmlblob_id = ?"; $dbresult = $db->Execute($query,array($htmlblob->name,$htmlblob->content,$htmlblob->owner,$htmlblob->use_wysiwyg,$htmlblob->description,$htmlblob->id)); if ($dbresult !== false) { $result = true; } return $result; } /** * Given a global content block's id, delete it from the database. * * @param integer $id The id of the block to delete * @return boolean Returns true if successful, false if not. */ function DeleteHtmlBlobByID($id) { $result = false; $db = cmsms()->GetDb(); $query = "DELETE FROM ".cms_db_prefix()."htmlblobs where htmlblob_id = ?"; $dbresult = $db->Execute($query,array($id)); if ($dbresult !== false) { $result = true; } return $result; } /** * Given a name, check to see if it already exists in the database. If the id is given, * ignore it for purposes of updating an existing block. * * @param string $name The name to check * @param integer $id The global content block to ignore. If not passed, all blocks will be checked. * @return boolean Returns true if the name is used. False if it not. */ function CheckExistingHtmlBlobName($name, $id = -1) { $result = false; $db = cmsms()->GetDb(); $row = null; $query = "SELECT htmlblob_id from ".cms_db_prefix()."htmlblobs WHERE htmlblob_name = ?"; if ($id > -1) { $query .= ' AND htmlblob_id <> ?'; $row = &$db->GetRow($query,array($name, $id)); } else { $row = &$db->GetRow($query,array($name)); } if ($row) { $result = true; } return $result; } /** * Checks to see if the given global content block's id is owned by the given user's id. * * @param integer $id The global content block id to check * @param string $user_id The user id to check * @return boolean Returns true if the user is the owner. False if they are not. */ function CheckOwnership($id, $user_id) { $result = false; $db = cmsms()->GetDb(); $query = "SELECT htmlblob_id FROM ".cms_db_prefix()."htmlblobs WHERE htmlblob_id = ? AND owner = ?"; $row = &$db->GetRow($query, array($id, $user_id)); if ($row) { $result = true; } return $result; } /** * Checks to see if the given user has permission to modify the given global content block. Both user and * block are identified by id. * * @param integer $id The global content block id to check * @param integer $user_id The user id to check * @return boolean Returns true if the user is the permitted. False if they are not. */ function CheckAuthorship($id, $user_id) { $myblobs = $this->AuthorBlobs($user_id); return quick_check_authorship($id,$myblobs); } /** * Clears the list of additional editors for the given content block id * * @param integer $id The global content block id to clear * @return void */ function ClearAdditionalEditors($id) { $db = cmsms()->GetDb(); $query = "DELETE FROM ".cms_db_prefix()."additional_htmlblob_users WHERE htmlblob_id = ?"; $dbresult = $db->Execute($query, array($id)); } /** * Insert a user id into the additional editors list of the specified global content block * * @param string $id The id of the global content block * @param string $user_id The id of the user to add to the list * @return boolean true if successful, false if not. */ function InsertAdditionalEditors($id, $user_id) { $db = cmsms()->GetDb(); $new_id = $db->GenID(cms_db_prefix()."additional_htmlblob_users_seq"); $query = "INSERT INTO ".cms_db_prefix()."additional_htmlblob_users (additional_htmlblob_users_id, htmlblob_id, user_id) VALUES (?,?,?)"; $dbresult = $db->Execute($query, array($new_id,$id,$user_id)); } } /** * @ignore * @package CMS * @version $Revision$ * @license GPL */ //class_alias('GlobalContentOperations','HtmlBlobOperations'); // class HtmlBlobOperations extends GlobalContentOperations // { // } # vim:ts=4 sw=4 noet ?>