/** * 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; } }
public function go() { header("Content-Type: text/html; charset=UTF-8"); // Import Libraries \framework\import("org.yeager.framework.tools.password"); \framework\import("org.yeager.ui.common"); \framework\import("org.yeager.ui.koala"); \framework\import("org.yeager.ui.icons"); \framework\import("org.yeager.framework.tools.password"); \framework\import("org.yeager.framework.tools.http.redirect"); \framework\import("org.yeager.framework.tools.http.byteserve"); \framework\import("org.yeager.core.versionable"); \framework\import("org.yeager.core.tree"); \framework\import("org.yeager.core.permissions"); \framework\import("org.yeager.core.privileges"); \framework\import("org.yeager.core.propertysettings"); \framework\import("org.yeager.core.properties"); \framework\import("org.yeager.core.history"); \framework\import("org.yeager.core.jsqueue"); \framework\import("org.yeager.core.tags"); \framework\import("org.yeager.core.comments"); \framework\import("org.yeager.core.cblock"); \framework\import("org.yeager.core.cblockmgr"); \framework\import("org.yeager.core.entrymasks"); \framework\import("org.yeager.core.page"); \framework\import("org.yeager.core.pagemgr"); \framework\import("org.yeager.core.file"); \framework\import("org.yeager.core.filemgr"); \framework\import("org.yeager.core.filetypes"); \framework\import("org.yeager.core.views"); \framework\import("org.yeager.core.mailing"); \framework\import("org.yeager.core.mailingmgr"); \framework\import("org.yeager.core.templates"); \framework\import("org.yeager.core.usergroups"); \framework\import("org.yeager.core.sites"); \framework\import("org.yeager.core.languages"); \framework\import("org.yeager.core.reftracker"); \framework\import("org.yeager.core.scheduler"); \framework\import("org.yeager.core.extensionmgr"); \framework\import("org.yeager.core.extensions"); \framework\import("org.yeager.core.fileprocessor"); \framework\import("org.yeager.core.cblockprocessor"); \framework\import("org.yeager.core.emailprocessor"); \framework\import("org.yeager.core.pageprocessor"); \framework\import("org.yeager.core.user"); \framework\import("org.yeager.core.usermgr"); \framework\import("org.yeager.core.tree"); \framework\import('org.yeager.core.updater'); \framework\import('org.yeager.core.archive'); // Set UTF8 for DB Singleton::YDB()->Execute("SET NAMES 'utf8';"); // Set ADODB-Fetchmode to ADODB_FETCH_ASSOC Singleton::YDB()->SetFetchMode(ADODB_FETCH_ASSOC); // Create instance of Koala class $koala = new Koala($this->yeager); $username = $this->session->getSessionVar("username"); $password = $this->session->getSessionVar("password"); Singleton::register("session", $this->session); Singleton::register("request", $this->request); Singleton::register("config", $this->config); Singleton::register("UserMgr", new UserMgr()); Singleton::register("guiUS", $this->request->parameters['us']); Singleton::register("guiLH", $this->request->parameters['lh']); // Get frontend timezone $this->frontendTimezone = (string) Singleton::config()->getVar('CONFIG/TIMEZONES/FRONTEND'); if (!$this->frontendTimezone) { $this->frontendTimezone = 'Europe/Berlin'; } $userID = Singleton::UserMgr()->validate($username, $password); Singleton::register("Usergroups", new Usergroups()); if (!$userID) { $userID = Singleton::UserMgr()->getAnonymousID(); $this->authenticated = false; } else { $this->authenticated = true; if ($userID != Singleton::UserMgr()->getAnonymousID()) { $this->session->setPSessionVar("username", $username); $this->session->setPSessionVar("password", $password); $this->session->setPSessionVar("userid", $userID); $this->session->setPSessionVar("isvalidated", true); } if ($this->session->getSessionVar('keepLoggedIn')) { $this->session->cookie_time = time() + 60 * 60 * 24 * 365; } else { $cookie_time = (int) Singleton::config()->getVar("CONFIG/SESSION/COOKIES/TIME"); $this->session->cookie_time = $cookie_time; } } // write roles to sessions for cachekey $user = new User($userID); $roles = $user->getUsergroupIDs(); if ($userID != Singleton::UserMgr()->getAnonymousID()) { $this->session->setPSessionVar("userroles", $roles); $this->session->setPSessionVar("userid", $userID); $this->session->setCookie("yg-userid", $userID); $roleHash = ""; foreach ($roles as $r) { $roleHash .= $r["ID"] . "x"; } $this->session->setCookie("yg-userroles", $roleHash); } elseif ($_COOKIE['yg-userid']) { // remove cookie if set $this->session->removeCookie("yg-userid"); $this->session->removeCookie("yg-userroles"); } $backendAllowed = $user->checkPermission('RBACKEND'); if ((!$this->authenticated || !$backendAllowed) && $this->frontendMode != 'true') { if ($this->page != 'responder' && ($this->request->parameters['handler'] != 'userLogin' || $this->request->parameters['handler'] != 'recoverLogin' || $this->request->parameters['handler'] != 'setNewPassword')) { $header = $_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'; header($header); echo $header; die; } } $user_timezone = $user->properties->getValue('TIMEZONE'); $timezoneAbbreviations = timezone_abbreviations_list(); foreach ($timezoneAbbreviations as $timezoneAbbreviations_item) { foreach ($timezoneAbbreviations_item as $timezone_item) { if ($timezone_item['timezone_id'] == $user_timezone) { global $tz; $tz = $timezone_item; } } } Singleton::register("Tags", new Tags()); Singleton::register("cbMgr", new CblockMgr()); Singleton::register("fileMgr", new FileMgr()); Singleton::register("sites", new Sites()); Singleton::register("templates", new Templates()); Singleton::register("entrymasks", new Entrymasks()); Singleton::register("mailingMgr", new MailingMgr()); Singleton::register("comments", new Comments()); Singleton::register("filetypes", new Filetypes()); Singleton::register("views", new Views()); Singleton::register("app", $this); Singleton::register("koala", $koala); $versioninfo = new Updater(); $versionp = $versioninfo->current_version_string; $this->yeager_version = $versionp; $this->yeager_revision = substr(YEAGER_REVISION, 4, 7); //$this->yeager_date = YEAGER_DATE; // get page to display if (empty($this->page)) { $this->page = "default"; } if (empty($this->action)) { $this->action = $this->request->parameters['action']; } $this->base = $this->request->script_name . "/" . strtolower($this->applicationname); /* yeager */ $this->docpath = Singleton::config()->getVar('CONFIG/DIRECTORIES/DOCPATH'); $this->docabsolut = $this->baseabsolut = $this->request->prefix . "://" . $this->request->http_host . $this->docpath; $this->imgpath = $this->request->prefix . "://" . $this->request->http_host . $this->docpath . "ui/img/"; $this->doc = $this->app_httproot; $this->sid = $this->session->id; $this->sidparam = "sid=" . $this->sid; // Regular Expressions for URL parsing $internalprefix = str_replace('/', '\\/', Singleton::config()->getVar('CONFIG/REFTRACKER/INTERNALPREFIX')); $this->URLRegEx1 = '/(.*)' . $internalprefix . '([a-z]*)\\/([0-9]*)(\\/*)(.*)/'; $this->URLRegEx2 = '/(.*)' . $internalprefix . '([a-z]*)\\/([0-9]*)\\/([0-9]*)(\\/*)(.*)/'; $filesdir = Singleton::config()->getVar('CONFIG/DIRECTORIES/FILESDIR'); $filesdoc = Singleton::config()->getVar('CONFIG/DIRECTORIES/FILESDOC'); $userpicdir = Singleton::config()->getVar('CONFIG/DIRECTORIES/USERPICDIR'); $embeddedCblockFolder = (int) Singleton::config()->getVar("CONFIG/EMBEDDED_CBLOCKFOLDER"); if (strlen($filesdir) < 1) { $filesdir = "files/"; } if (strlen($userpicdir) < 1) { $userpicdir = $filesdir; } if (strlen($filesdoc) < 1) { $filesdoc = "/yeager/files/"; } if (strlen($embeddedCblockFolder) < 1 || $embeddedCblockFolder == 99999) { throw new Exception("No or wrong blindfolder configured!"); } $this->filesdir = $filesdir; $this->filesdoc = $filesdoc; $this->userpicdir = $userpicdir; $this->modules = Singleton::config()->getVars("CONFIG/MODULES"); $this->files_procs = array_merge(Singleton::config()->getVars("CONFIG/FILES_PROCESSORS"), Singleton::config()->getVars("CONFIG/FILE_PROCESSORS")); $this->page_procs = Singleton::config()->getVars("CONFIG/PAGE_PROCESSORS"); $this->cblock_procs = Singleton::config()->getVars("CONFIG/CBLOCK_PROCESSORS"); $this->email_procs = Singleton::config()->getVars("CONFIG/EMAIL_PROCESSORS"); $this->filesprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/FILES_PROCS"); $this->pageprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/PAGE_PROCS"); $this->cblockprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/CBLOCK_PROCS"); $this->emailprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/EMAIL_PROCS"); $this->templates = new Templates(); $this->templatedir = $this->approot . (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/TEMPLATEDIR'); $this->templatedoc = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/TEMPLATEDOC'); $this->templatedirabsolut = $this->request->prefix . "://" . $this->request->http_host . $this->templatedoc; $this->extensiondir = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/EXTENSIONSDIR'); $this->extensiondoc = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/EXTENSIONSDOC'); $this->processordir = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/PROCESSORSDIR'); $this->webroot = "/" . rtrim(ltrim((string) Singleton::config()->getVar("CONFIG/DIRECTORIES/WEBROOT"), '/'), '/') . '/'; if ($this->webroot == "//") { $this->webroot = "/"; } $this->devmode = (string) Singleton::config()->getVar('CONFIG/DEVMODE'); $this->languages = new Languages(); $forceLangInclude = (string) Singleton::config()->getVar('CONFIG/PAGES/' . strtoupper($this->page) . '/FORCE_LANG_INCLUDE'); if ($this->frontendMode != 'true' || $forceLangInclude == 'true') { // Read default language from config-file if ($this->authenticated) { $user = new User(Singleton::UserMgr()->getCurrentUserID()); $langid = $user->getLanguage(); $langinfo = $this->languages->get($langid); $lang = $langinfo["CODE"]; } else { // Check if we have a language which matches the browser-language $browserLanguages = array(); $tmpBrowserLanguages = explode(',', strtoupper(str_replace(' ', '', $_SERVER["HTTP_ACCEPT_LANGUAGE"]))); foreach ($tmpBrowserLanguages as $tmpBrowserLanguage) { array_push($browserLanguages, substr($tmpBrowserLanguage, 0, 2)); } $browserLanguages = array_values(array_unique($browserLanguages)); foreach ($browserLanguages as $browserLanguage) { if (!$lang) { if (file_exists($this->approot . "ui/lang/" . $browserLanguage . ".php")) { $lang = $browserLanguage; } } } } // When everything fails, fallback to default language if (strlen($lang) < 1) { $defaultLanguage = Singleton::config()->getVar('CONFIG/DEFAULT_LANGUAGE'); $lang = $defaultLanguage ? $defaultLanguage : 'DE'; } require_once $this->approot . "ui/lang/" . $lang . ".php"; } $this->itext =& $itext; Singleton::register("itext", $itext); if (!is_readable($this->page_file) || is_dir($this->page_file)) { $this->error->raise("Page " . $this->page . "'s code (" . $this->page_file . ") not found.", ERR_DEBUG); } else { $this->error->raise("loading " . $this->page_file, ERR_DEBUG); if ($this->page_template != "") { require_once "libs/org/smarty/libs/Smarty.class.php"; $smarty = new Smarty(); $this->smarty = $smarty; $smarty->compile_check = true; $smarty->debugging = false; $smarty->use_sub_dirs = false; // FIXME move to installer @mkdir($this->tmpdir . 'templates_compile', 0700); @mkdir($this->tmpdir . 'templates_cache', 0700); $smarty->compile_dir = $this->tmpdir . 'templates_compile'; $smarty->cache_dir = $this->tmpdir . 'templates_cache'; $smarty->force_compile = (string) $this->config->getVar('CONFIG/CACHE/SMARTY_FORCECOMPILE'); $smarty->caching = 0; $smarty->load_filter('output', 'trimwhitespace'); $smarty->assign("yeager_version", $this->yeager_version); $smarty->assign("yeager_revision", $this->yeager_revision); //$smarty->assign("yeager_date",$this->yeager_date); $smarty->assign("lang", $lang); $smarty->assign("docabsolut", $this->docabsolut); $smarty->assign("baseabsolut", $this->baseabsolut); $smarty->assign("imgpath", $this->imgpath); $smarty->assign("internalprefix", (string) Singleton::config()->getVar('CONFIG/REFTRACKER/INTERNALPREFIX')); $smarty->assign("request_prefix", $this->request->prefix); $smarty->assign("extensiondoc", $this->extensiondoc); $smarty->assign("extensiondir", $this->extensiondir); $smarty->assign("is_authenticated", $this->authenticated); $smarty->assign("base", $this->base); $smarty->assign("page", $this->page); $smarty->assign("sid", $this->sid); $smarty->assign("sidparam", $this->sidparam); $smarty->assign("templatedir", $this->templatedir); $smarty->assign("templatedoc", $this->templatedoc); $smarty->assign("templatedirabsolut", $this->templatedirabsolut); $smarty->assign("approot", getRealpath($this->approot)); $smarty->assign("devmode", $this->devmode); $smarty->assign("webroot", $this->webroot); $smarty->assign("URLRegEx1", $this->URLRegEx1); require_once $this->approot . "libs/org/yeager/ui/smarty_modifiers.php"; } $smarty->assign("itext", $itext); Singleton::register("smarty", $smarty); if ($_SERVER['HTTP_X_YEAGER_AUTHENTICATION'] == 'suppress') { $authHeader = 'X-Yeager-Authenticated: delayed'; } else { $authHeader = 'X-Yeager-Authenticated: ' . ($this->authenticated ? 'true' : 'false'); } header($authHeader); if ($this->frontendMode == "true" && $this->cached) { // capture ob include_once $this->page_file; $output = ob_get_clean(); Singleton::FC()->write("output", $output); Singleton::FC()->flush(); echo $output; } else { include_once $this->page_file; } if ($this->frontendMode != 'true') { $koala->getQueuedCommands(); $koala->go(); } } }
/** * 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; } }
/** * 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; } }
/** * 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; }
/** * 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; }
/** * 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; }
// 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']; } $filesize = filesize($fileTmpName);
/** * 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; }
/** * 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; } }
/** * 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; } }
/** * 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; } }
/** * 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; }
/** * 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; } }