示例#1
0
 /**
  * Adds this User to a Usergroup
  *
  * @param int $usergroupId Usergroup Id
  */
 function addUsergroup($usergroupId)
 {
     if ($this->hasUsergroup($usergroupId)) {
         return true;
     }
     $this->_usergroups = false;
     $uid = (int) $this->id;
     if (sUsergroups()->permissions->check($this->_uid, 'RUSERS') || $uid == $this->_uid) {
         $usergroupId = (int) $usergroupId;
         if ($usergroupId > 0) {
             $sql = "INSERT INTO `yg_user_lnk_usergroups` (`UID`, `USERGROUPID`) VALUES (?, ?);";
             sYDB()->Execute($sql, $uid, $usergroupId);
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PERMISSION_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return true;
     } else {
         return false;
     }
 }
示例#2
0
 /**
  * Sets the permanent name of this Mailing
  *
  * @param string $pname Pname
  * @return bool TRUE on success FALSE in case of an error
  * @throws Exception
  */
 public function setPName($pname)
 {
     $mailingID = $this->_id;
     if ($this->permissions->checkInternal($this->_uid, $mailingID, "RWRITE")) {
         $pname = $this->filterPName($pname);
         if (is_numeric($pname)) {
             return false;
         }
         $mailingMgr = new MailingMgr();
         $checkpinfo = $mailingMgr->getMailingIdByPName($pname);
         if ($checkpinfo["ID"] != $mailingID && $checkpinfo["ID"] > 0) {
             $pname = $pname . $mailing;
         }
         $sql = "UPDATE yg_mailing_tree SET PNAME = ? WHERE (ID = ?);";
         $result = sYDB()->Execute($sql, $pname, $mailingID);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PNAME_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return true;
     } else {
         return false;
     }
 }
示例#3
0
 /**
  * Sets a Permission for a specific Usergroup
  *
  * @param int $usergroupId
  * @param string $permission Permission (RREAD, RWRITE, RDELETE, RSUB, RSTAGE, RMODERATE, RCOMMENT, RSEND)
  * @param $objectId Object Id
  * @param int $value Permission value (1 for allowed, 0 for not allowed)
  * @return bool TRUE on success or FALSE if not allowed
  * @throws Exception
  */
 public function setByUsergroup($usergroupId, $permission, $objectId, $value)
 {
     $usergroupId = (int) $usergroupId;
     $objectId = (int) $objectId;
     $permission = sYDB()->escape_string(sanitize($permission));
     $value = sYDB()->escape_string(sanitize($value));
     if ($value < 1) {
         $value = 0;
     }
     // Check if current user has permissions to change usergroup-permissions
     if (!sUsergroups()->usergroupPermissions->checkInternal(sUserMgr()->getCurrentUserID(), $usergroupId, 'RWRITE')) {
         return false;
     }
     $pinfo = $this->getByUsergroup($usergroupId, $objectId);
     if (count($pinfo) > 0) {
         // Update
         $sql = "UPDATE " . $this->_table . " SET `{$permission}` = ? WHERE OID = ? AND USERGROUPID = ?;";
         $result = sYDB()->Execute($sql, $value, $objectId, $usergroupId);
     } else {
         // Insert
         $sql = "INSERT INTO " . $this->_table . " SET USERGROUPID = ?, `{$permission}` = ?, OID = ?;";
         $result = sYDB()->Execute($sql, $usergroupId, $value, $objectId);
     }
     if ($result === false) {
         throw new Exception(sYDB()->ErrorMsg());
     }
     sUsergroups()->setByUsergroupHashPermission($this->_table, $usergroupId, $objectId, $permission, $value);
     // Call callback, if present
     if ($this->_object) {
         $this->_object->onPermissionChange($usergroupId, $permission, $value, $objectId);
     }
     if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PERMISSION_CHANGE") == "true") {
         Singleton::FC()->emptyBucket();
     }
     return true;
 }
示例#4
0
文件: y.php 项目: nrueckmann/yeager
 public function hitCache()
 {
     $this->base = $this->request->script_name . "/" . strtolower($this->applicationname);
     $this->cached = false;
     $this->cache_config = new \framework\Config("config/cache.xml.php");
     Singleton::register("cache_config", $this->cache_config);
     $reverse_proxy = Singleton::cache_config()->getVar("CONFIG/REVERSE_PROXY/ENABLED");
     if ($reverse_proxy == "true") {
         $reverse_proxy_purge = Singleton::cache_config()->getVar("CONFIG/REVERSE_PROXY/PURGE_COMMAND");
     } else {
         $reverse_proxy_purge = "";
     }
     Singleton::register("FC", new \framework\Cache("page", 0, $this->tmpdir, $reverse_proxy_purge));
     if ($this->session->getCookie('version') == 'working') {
         return false;
     }
     if ($this->frontendMode == "true") {
         $frontendCache = (string) $this->config->getVar('CONFIG/CACHE/FRONTEND');
         if ($frontendCache == "true") {
             //\framework\import("org.yeager.framework.cache.controller");
             $cacheBucket = (string) $this->config->getVar('CONFIG/PAGES/' . strtoupper($this->page) . '/CACHE');
             if ($cacheBucket != "") {
                 $requestHash = md5($_SERVER['REQUEST_URI']);
                 if (strstr($_SERVER['REQUEST_URI'], "nocache=true")) {
                     return;
                 }
                 if (strstr($_SERVER['REQUEST_URI'], "version=working")) {
                     return;
                 }
                 if (implode("", $_POST) != "") {
                     return;
                 }
                 $pattern = $this->cache_config->getVars("CONFIG/" . strtoupper($cacheBucket) . "/URIS");
                 foreach ($pattern as $p) {
                     if (preg_match($p["URI"], $_SERVER['REQUEST_URI'])) {
                         $ttl = $p["TTL"];
                         $key = $p["KEY"];
                         break;
                     }
                 }
                 if ($ttl == 0 || strtolower($key) == 'none') {
                     return;
                 }
                 // zero ttl means no-cache
                 if ($key == "UserGroup") {
                     $roles = $this->session->getSessionVar("userroles");
                     $roleHash = "";
                     foreach ($roles as $r) {
                         $roleHash .= $r["ID"] . "-";
                     }
                 } elseif ($key == "ProtoUserGroup") {
                     $roles = $this->session->getSessionVar("userroles");
                     $roleHash = $this->request->prefix . "-";
                     foreach ($roles as $r) {
                         $roleHash .= $r["ID"] . "-";
                     }
                 } else {
                     $userID = $this->session->getCookie("yg-userid");
                     if ($userID < 1) {
                         $userID = (int) $this->config->getVar("CONFIG/SYSTEMUSERS/ANONUSERID");
                     }
                     $roleHash = $userID;
                     // per user cache
                 }
                 $cacheId = $requestHash . "-" . $roleHash;
                 Singleton::FC()->setCacheId($cacheId);
                 Singleton::FC()->setTTL($ttl);
                 $cached_OB = Singleton::FC()->getvalue("output");
                 $this->cached = true;
                 if ($cached_OB != false) {
                     header("X-YG-CACHEHIT: true");
                     header("X-YG-CACHEKEY: {$key}");
                     ob_end_clean();
                     ob_start();
                     echo $cached_OB;
                     return true;
                 }
             }
         }
     }
 }
示例#5
0
 /**
  * Removes a specific Tag
  *
  * @param int $tagId Tag Id
  *
  * @return array Array with all elements which were successfully deleted
  */
 function remove($tagId)
 {
     $tagId = $origTagId = (int) $tagId;
     $rootNode = $this->tree->getRoot();
     if ($tagId == $rootNode) {
         return array();
     }
     // Get all nodes
     $successNodes = array();
     $allNodes = $this->tree->get($tagId, 1000);
     foreach ($allNodes as $allNodesItem) {
         $tagId = (int) $allNodesItem['ID'];
         if ($this->permissions->checkInternal($this->_uid, $tagId, "RDELETE")) {
             $sql = "DELETE FROM yg_tags_properties WHERE OBJECTID = ?;";
             sYDB()->Execute($sql, $tagId);
             $successNodes[] = $tagId;
         }
     }
     if (in_array($origTagId, $successNodes)) {
         $this->tree->remove($origTagId);
     }
     if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/TAG_DELETE") == "true") {
         Singleton::FC()->emptyBucket();
     }
     return $successNodes;
 }
示例#6
0
 /**
  * Sets a Property value
  *
  * @param string $identifier Property identifier
  * @param mixed $value Property value
  * @return bool TRUE on success or FALSE in case of an error
  * @throws Exception
  */
 function setValue($identifier, $value)
 {
     if ($this->_object == NULL || $this->_object->permissions->checkInternal($this->_uid, $this->_object->getID(), 'RWRITE')) {
         $oid = (int) $this->_property_id;
         $identifier = sYDB()->escape_string(sanitize($identifier));
         $sql = "SELECT OID FROM `" . $this->_table . "v` WHERE OID = ?;";
         $result = sYDB()->Execute($sql, $oid);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
             return false;
         }
         $resultarray = $result->GetArray();
         $sql = "SELECT TYPE FROM `" . $this->_table . "` WHERE IDENTIFIER = ?;";
         $result = sYDB()->Execute($sql, $identifier);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
             return false;
         }
         $typeresultarray = $result->GetArray();
         if ($typeresultarray[0]['TYPE'] == 'PAGE') {
             if (is_array($value)) {
                 $value = json_encode($value);
             }
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PROPERTY_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         if ($this->_object) {
             $this->_object->markAsChanged();
         }
         if (count($resultarray) > 0) {
             $sql = "UPDATE `" . $this->_table . "v` SET `{$identifier}` = ? WHERE OID = ?;";
             $result = sYDB()->Execute($sql, $value, $oid);
             if ($result === false) {
                 throw new Exception(sYDB()->ErrorMsg());
             }
             return true;
         } else {
             $sql = "INSERT INTO `" . $this->_table . "v` ( `OID` ,  `{$identifier}`) VALUES (?, ?);";
             $result = sYDB()->Execute($sql, $oid, $value);
             if ($result === false) {
                 throw new Exception(sYDB()->ErrorMsg());
             }
             return true;
         }
     } else {
         return false;
     }
 }
示例#7
0
 /**
  * Sets a Privilege for a specific Usergroup
  *
  * @param int $usergroupId
  * @param string $privilege Privilege
  * @param int $value Privilege value (1 for allowed, 0 for not allowed)
  * @return bool TRUE on success or FALSE if not allowed
  * @throws Exception
  */
 public function setByUsergroup($usergroupId, $privilege, $value)
 {
     $usergroupId = (int) $usergroupId;
     $privilege = sYDB()->escape_string(sanitize($privilege));
     $value = sYDB()->escape_string(sanitize($value));
     if ($value < 1) {
         $value = 0;
     }
     // Check if current user has permissions to change usergroup-permissions
     if (!sUsergroups()->usergroupPermissions->checkInternal(sUserMgr()->getCurrentUserID(), $usergroupId, 'RWRITE')) {
         return false;
     }
     $sql = "SELECT ID FROM " . $this->_table . " WHERE PRIVILEGE = ?;";
     $result = sYDB()->Execute($sql, $privilege);
     $resultarray = @$result->GetArray();
     $privilegeId = (int) $resultarray[0]['ID'];
     if ($privilegeId) {
         $pinfo = $this->getByUsergroup($usergroupId);
         if ($pinfo[$privilege] === NULL) {
             // Insert
             $sql = "INSERT INTO " . $this->_table_values . "\n\t\t\t\t\t\t\t(`USERGROUPID`, `PRIVILEGEID`, `VALUE`)\n\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t(?, ?, ?);";
             $result = sYDB()->Execute($sql, $usergroupId, $privilegeId, $value);
         } else {
             // Update
             $sql = "UPDATE " . $this->_table_values . " SET VALUE = ? WHERE USERGROUPID = ? AND PRIVILEGEID = ?;";
             $result = sYDB()->Execute($sql, $value, $usergroupId, $privilegeId);
         }
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PERMISSION_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return true;
     }
     return false;
 }
示例#8
0
 /**
  * Removes a Mailing from the Trash
  *
  * @param int $mailingId Mailing Id
  *
  * @return array Array with all elements which were successfully deleted
  */
 function remove($mailingId)
 {
     $mailingId = $origMailingId = (int) $mailingId;
     $rootNode = $this->tree->getRoot();
     if ($mailingId == $rootNode) {
         return array();
     }
     // Get all nodes
     $successNodes = array();
     $allNodes = $this->tree->get($mailingId, 1000);
     foreach ($allNodes as $allNodesItem) {
         $mailingId = (int) $allNodesItem['ID'];
         if ($this->permissions->checkInternal($this->_uid, $mailingId, "RDELETE")) {
             // Collect and remove all linked blind contentblocks
             $sql = "SELECT * FROM `yg_mailing_lnk_cb` WHERE PID = {$mailingId};";
             $linked_cos = $this->cacheExecuteGetArray($sql);
             $c = sCblockMgr();
             foreach ($linked_cos as $linked_co) {
                 $cblock = $c->getCblock($linked_co['CBID']);
                 if ($cblock) {
                     $coInfo = $cblock->get();
                     // Blind contentblock?
                     if ($coInfo['EMBEDDED'] == 1) {
                         $cblock->delete();
                         $c->remove($linked_co['CBID']);
                     }
                 }
             }
             $tmpMailing = $this->getMailing($mailingId);
             $mailingInfo = $tmpMailing->get();
             $tmpMailing->tags->clear();
             $tmpMailing->history->clear();
             // Remove mailing
             $sql = "DELETE FROM `yg_mailing_properties` WHERE OBJECTID = ?;";
             sYDB()->Execute($sql, $mailingId);
             // Remove content object links
             $sql = "DELETE FROM `yg_mailing_lnk_cb` WHERE PID = ?;";
             sYDB()->Execute($sql, $mailingId);
             // Remove statusinfo
             $sql = "DELETE FROM `yg_mailing_status` WHERE OID = ?;";
             sYDB()->Execute($sql, $mailingId);
             $this->callExtensionHook('onRemove', $mailingId, 0, $mailingInfo);
             $successNodes[] = $mailingId;
         }
     }
     if (in_array($origMailingId, $successNodes)) {
         $this->tree->remove($origMailingId);
     }
     if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/MAILING_DELETE") == "true") {
         Singleton::FC()->emptyBucket();
     }
     return $successNodes;
 }
示例#9
0
 /**
  * Uninstalls this Extension
  *
  * @return bool TRUE on success or FALSE in case of an error
  * @throws Exception
  */
 public function uninstall()
 {
     if (parent::uninstall()) {
         if ($this->uninstallPropertyTables("yg_ext_" . $this->_code . "_cblocks")) {
             $sql = "DELETE FROM yg_extensions_lnk_cblocks WHERE CODE = ?";
             $result = sYDB()->Execute($sql, $this->_code);
             if ($result === false) {
                 throw new Exception(sYDB()->ErrorMsg());
             }
             if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/EXTENSION_UNINSTALL") == "true") {
                 Singleton::FC()->emptyBucket();
             }
             return true;
         }
     } else {
         return false;
     }
 }
示例#10
0
             }
             // Remove old contentareas in frontend
             if (count($rfilecontentareas) > 0) {
                 for ($i = 0; $i < count($rfilecontentareas); $i++) {
                     $koala->callJSFunction('Koala.yg_removeTemplateContentareaField', $window_id, $rfilecontentareas[$i]['CODE']);
                 }
             }
             // Remove old navigations in frontend
             if (count($rfilenavis) > 0) {
                 for ($i = 0; $i < count($rfilenavis); $i++) {
                     $koala->callJSFunction('Koala.yg_removeTemplateNavigationField', $window_id, $rfilenavis[$i]['CODE']);
                 }
             }
             $koala->queueScript("Koala.yg_setTemplateFileName( '" . $window_id . "', '" . $filename . "' );");
             $koala->queueScript("window.noprocessing = true;");
             if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/TEMPLATE_CHANGE") == "true") {
                 Singleton::FC()->emptyBucket();
             }
         }
     }
     break;
 case 'uploadTemplatePreview':
     $filetype = $this->params['type'];
     $filetitle = $this->params['title'];
     if ($_FILES['Filedata']['tmp_name']) {
         $fileTmpName = $_FILES['Filedata']['tmp_name'];
         $filename = $_FILES['Filedata']['name'];
     } else {
         $fileTmpName = fixAndMovePLUploads();
         $filename = $_REQUEST['name'];
     }
示例#11
0
 /**
  * Sets the permanent name of the specified Site
  *
  * @param int $siteId Site Id
  * @param string $PName Permanent name
  * @return bool TRUE on success or FALSE in case of an error
  */
 public function setPName($siteId, $PName)
 {
     if (sUsergroups()->permissions->check($this->_uid, 'RSITES')) {
         $siteId = (int) $siteId;
         $PName = sYDB()->escape_string(sanitize($PName));
         if (is_numeric($PName)) {
             return false;
         }
         $sql = "UPDATE yg_site SET PNAME = ? WHERE ID = ?;";
         $result = $this->_db->execute($sql, $PName, $siteId);
         if ($result === false) {
             return false;
         }
         $sql = "UPDATE `yg_site_" . $siteId . "_tree` SET PNAME = ? WHERE ID = 1;";
         $result = $this->_db->execute($sql, $PName);
         if ($result === false) {
             return false;
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PNAME_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return true;
     } else {
         return false;
     }
 }
示例#12
0
 /**
  * Sets the permanent name of this Cblock
  *
  * @param string $pname Permanent name
  * @return bool TRUE on success or FALSE in case of an error
  * @throws Exception
  */
 public function setPName($pname)
 {
     $cbId = $this->_id;
     $pname = sYDB()->escape_string(sanitize($pname));
     if ($this->permissions->checkInternal($this->_uid, $cbId, "RWRITE")) {
         $pname = $this->filterPName($pname);
         if (is_numeric($pname)) {
             return false;
         }
         $checkpinfo = sCblockMgr()->getCblockIdByPName($pname);
         if ($checkpinfo["ID"] != $cbId && $checkpinfo["ID"] > 0) {
             $pname = $pname . $cbId;
         } else {
             if ($checkpinfo["ID"] > 0 && $checkpinfo["ID"] == $cbId) {
             } else {
             }
         }
         $sql = "SELECT PNAME AS STATE FROM yg_contentblocks_tree WHERE (ID = ?);";
         $result = sYDB()->Execute($sql, $cbId);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         $sql = "UPDATE yg_contentblocks_tree SET PNAME = '{$pname}' WHERE (ID = ?);";
         $result = sYDB()->Execute($sql, $cbId);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/PNAME_CHANGE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return true;
     } else {
         return false;
     }
 }
示例#13
0
                require_once $this->approot . $this->filesprocdir . $procs[$p]["dir"] . "/" . $procs[$p]["classname"] . ".php";
            } elseif (file_exists($this->approot . $this->processordir . $procs[$p]["dir"] . "/" . $procs[$p]["classname"] . ".php")) {
                require_once $this->approot . $this->processordir . $procs[$p]["dir"] . "/" . $procs[$p]["classname"] . ".php";
            } else {
                continue;
            }
            sUserMgr()->impersonate($jobs[$j]['USERID']);
            $classname = (string) $procs[$p]["classname"];
            $namespace = (string) $procs[$p]["namespace"];
            if (strlen($namespace)) {
                $classname = $namespace . "\\" . $classname;
            }
            $moduleclass = new $classname();
            if ($fileMgr->scheduler->pickJob($jobs[$j]["ID"])) {
                if ($moduleclass->process($jobs[$j]["OBJECTID"], $jobs[$j]["PARAMETERS"])) {
                    if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/FILE_PROCESSVIEW") == "true") {
                        Singleton::FC()->emptyBucket();
                    }
                    if ($jobs[$j]['PARAMETERS']['VIEW']['ID'] && $jobs[$j]['PARAMETERS']['VIEW']['ID'] != "") {
                        $jsQueue->add($jobs[$j]['PARAMETERS']['FILEINFO']['OBJECTID'], HISTORYTYPE_FILE, 'FILE_GENERATEDVIEW', sGuiUS(), $jobs[$j]['PARAMETERS']['VIEW']['ID'], $jobs[$j]['PARAMETERS']['VIEW']['IDENTIFIER']);
                    }
                    $fileMgr->scheduler->finishJob($jobs[$j]["ID"]);
                } else {
                    $fileMgr->scheduler->finishJob($jobs[$j]["ID"], SCHEDULER_STATE_FAILED);
                }
            }
        }
    }
}
// Pages (for every site)
sUserMgr()->impersonate((int) sConfig()->getVar("CONFIG/SYSTEMUSERS/ROOTUSERID"));
示例#14
0
 /**
  * Moves this File to the trashcan
  *
  * @return array Array with all elements which were successfully deleted
  */
 function delete()
 {
     $fileID = (int) $this->_id;
     $rootNode = sFileMgr()->tree->getRoot();
     if ($fileID == $rootNode) {
         return array();
     }
     // Check if object is a folder
     $successNodes = array();
     $currFile = sFileMgr()->getFile($fileID);
     $fileInfo = $currFile->get();
     if ($fileInfo['FOLDER'] == 1) {
         $subNodes = sFileMgr()->getList($fileID, array('SUBNODES'), 'group2.LFT', 1000);
         if (count($subNodes) > 0) {
             foreach ($subNodes as $subNode) {
                 $file = sFileMgr()->getFile($subNode['ID']);
                 $successfullyDeleted = $file->delete();
                 if (in_array($subNode['ID'], $successfullyDeleted) === true) {
                     foreach ($successfullyDeleted as $successfullyDeletedItem) {
                         $successNodes[] = $successfullyDeletedItem;
                     }
                 }
             }
         }
     }
     if ($this->permissions->checkInternal($this->_uid, $fileID, "RDELETE")) {
         // Move to root level
         sFileMgr()->tree->moveTo($fileID, $rootNode);
         $sql = "UPDATE yg_files_properties SET DELETED = 1 WHERE OBJECTID = ?;";
         sYDB()->Execute($sql, $fileID);
         $successNodes[] = $fileID;
         sFileMgr()->callExtensionHook('onDelete', (int) $this->_id, (int) $this->_version);
     }
     if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/FILE_DELETE") == "true") {
         Singleton::FC()->emptyBucket();
     }
     return $successNodes;
 }
示例#15
0
 /**
  * Removes a specific Comment
  *
  * @param int $objectId Object Id
  * @param int $commentId Comment Id
  * @return int ERROR_NONE on success or ERROR_COMMENTS_NO_MOD_RIGHTS
  */
 function remove($objectId = 0, $commentId = 0)
 {
     $objectId = (int) $objectId;
     $commentId = (int) $commentId;
     if ((int) $objectId == 0) {
         $objectId = (int) $this->_object->getID();
     }
     // Check permissions (RCOMMENT is required)
     if ($commentId > 0 && $this->permissions->checkInternal(sUserMgr()->getCurrentUserID(), $objectId, 'RMODERATE')) {
         $sql = "DELETE FROM yg_comments WHERE (ID = ?);";
         $result = sYDB()->Execute($sql, $commentId);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         $sql = "DELETE FROM " . $this->_object->getCommentsLinkTable() . " WHERE (COMMENTID = ?);";
         $result = sYDB()->Execute($sql, $commentId);
         if ($result === false) {
             throw new Exception(sYDB()->ErrorMsg());
         }
         if (Singleton::cache_config()->getVar("CONFIG/INVALIDATEON/COMMENT_REMOVE") == "true") {
             Singleton::FC()->emptyBucket();
         }
         return ERROR_NONE;
     } else {
         return ERROR_COMMENTS_NO_MOD_RIGHTS;
     }
 }