/** * Does the hard work: installs the module and registers needed constants * */ public function install() { $strReturn = ""; //fetch navifolder-id $strNaviFolderId = ""; $arrFolder = class_module_pages_folder::getFolderList(); foreach ($arrFolder as $objOneFolder) { if ($objOneFolder->getStrName() == "mainnavigation") { $strNaviFolderId = $objOneFolder->getSystemid(); } } $strReturn .= "Creating new page rssfeed...\n"; $objPage = new class_module_pages_page(); $objPage->setStrName("rssfeed"); $objPage->setStrBrowsername("Rssfeed"); $objPage->setStrTemplate("standard.tpl"); $objPage->updateObjectToDb($strNaviFolderId); $strPageId = $objPage->getSystemid(); $strReturn .= "ID of new page: " . $strPageId . "\n"; $strReturn .= "Adding pagelement to new page\n"; if (class_module_pages_element::getElement("rssfeed") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager"); $objPagelement->setStrName("special"); $objPagelement->setStrElement("rssfeed"); $objPagelement->updateObjectToDb($strPageId); $strElementId = $objPagelement->getSystemid(); $arrParams = array(); if ($this->strContentLanguage == "de") { $arrParams = array("rssfeed.tpl", 10, "http://www.kajona.de/kajona_news.rss", $strElementId); } else { $arrParams = array("rssfeed.tpl", 10, "http://www.kajona.de/kajona_news_en.rss", $strElementId); } $strQuery = "UPDATE " . _dbprefix_ . "element_universal\n SET char1 = ?,\n " . $this->objDB->encloseColumnName("int1") . " = ?,\n char2 = ?\n WHERE content_id = ?"; if ($this->objDB->_pQuery($strQuery, $arrParams)) { $strReturn .= "Rssfeed element created.\n"; } else { $strReturn .= "Error creating Rssfeed element.\n"; } } $strReturn .= "Adding headline-element to new page\n"; if (class_module_pages_element::getElement("row") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("headline_row"); $objPagelement->setStrName("headline"); $objPagelement->setStrElement("row"); $objPagelement->updateObjectToDb($strPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n SET paragraph_title = ?\n WHERE content_id = ?"; if ($this->objDB->_pQuery($strQuery, array("Rssfeed", $strElementId))) { $strReturn .= "Headline element created.\n"; } else { $strReturn .= "Error creating headline element.\n"; } } return $strReturn; }
public function install() { $strReturn = ""; //fetch navifolder-id $strNaviFolderId = ""; $arrFolder = class_module_pages_folder::getFolderList(); foreach ($arrFolder as $objOneFolder) { if ($objOneFolder->getStrName() == "mainnavigation") { $strNaviFolderId = $objOneFolder->getSystemid(); } } $strReturn .= "Creating event\n"; $objEvent = new class_module_eventmanager_event(); $objEvent->setObjStartDate(new class_date()); $objEvent->setObjEndDate(new class_date(time() + 3600)); $objEvent->setIntRegistrationRequired(1); $objEvent->setIntEventStatus(2); if ($this->strContentLanguage == "de") { $objEvent->setStrTitle("Start der neuen Webseite mit Kajona"); $objEvent->setStrDescription("Die neue Webseite ist online!<br />Als Basis dafür kommt das freie Open Source Content Management System <a href=\"http://www.kajona.de\">Kajona</a>, zum Einsatz."); } else { $objEvent->setStrTitle("Launch of the new website"); $objEvent->setStrDescription("The new website is available!<br />The page is based on <a href=\"http://www.kajona.de\">Kajona</a>, a free open source content management system."); } $strReturn .= "Saving event...\n"; $objEvent->updateObjectToDb(); $strReturn .= "Creating events-page\n"; $objPage = new class_module_pages_page(); $objPage->setStrName("events"); $objPage->setStrBrowsername("Events"); $objPage->setStrTemplate("standard.tpl"); $objPage->updateObjectToDb($strNaviFolderId); $strEventsPageId = $objPage->getSystemid(); $strReturn .= "ID of new page: " . $strEventsPageId . "\n"; $strReturn .= "Adding eventmanager-element to new page\n"; if (class_module_pages_element::getElement("eventmanager") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager"); $objPagelement->setStrName("special"); $objPagelement->setStrElement("eventmanager"); $objPagelement->updateObjectToDb($strEventsPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_universal\n SET char1 = ?,\n " . $this->objDB->encloseColumnName("int1") . " = ?,\n " . $this->objDB->encloseColumnName("int2") . " = ?\n WHERE content_id = ? "; if ($this->objDB->_pQuery($strQuery, array("eventmanager.tpl", 0, 0, $strElementId))) { $strReturn .= "eventmanger-element created.\n"; } else { $strReturn .= "Error creating eventmanager-element.\n"; } } $strReturn .= "Adding headline-element to new page\n"; if (class_module_pages_element::getElement("row") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("headline_row"); $objPagelement->setStrName("headline"); $objPagelement->setStrElement("row"); $objPagelement->updateObjectToDb($strEventsPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n SET paragraph_title = ?\n WHERE content_id = ?"; if ($this->objDB->_pQuery($strQuery, array("Events", $strElementId))) { $strReturn .= "Headline element created.\n"; } else { $strReturn .= "Error creating headline element.\n"; } } return $strReturn; }
/** * Saves the current object to the database. Determines, whether the current object has to be inserted * or updated to the database. * In case of an update, the objects' updateStateToDb() method is being called (as required by class_model). * In the case of a new object, a blank record is being created. Therefore, all tables returned by class' doc comment * will be filled with a new record (using the same new systemid as the primary key). * The newly created systemid is being set as the current objects' one and can be used in the afterwards * called updateStateToDb() method to reference the correct rows. * * @param string|bool $strPrevId The prev-id of the records, either to be used for the insert or to be used during the update of the record * @return bool * @since 3.3.0 * @throws class_exception * @see interface_model * * @todo move to class_orm_objectupdate completely */ public function updateObjectToDb($strPrevId = false) { $bitCommit = true; /** @var $this class_root|interface_model */ if (!$this instanceof interface_model) { throw new class_exception("current object must implemented interface_model", class_exception::$level_FATALERROR); } if (!$this->getLockManager()->isAccessibleForCurrentUser()) { $objUser = new class_module_user_user($this->getLockManager()->getLockId()); throw new class_exception("current object is locked by user " . $objUser->getStrDisplayName(), class_exception::$level_ERROR); } if (is_object($strPrevId) && $strPrevId instanceof class_root) { $strPrevId = $strPrevId->getSystemid(); } $this->objDB->transactionBegin(); //current systemid given? if not, create a new record. $bitRecordCreated = false; if (!validateSystemid($this->getSystemid())) { $bitRecordCreated = true; if ($strPrevId === false || $strPrevId === "" || $strPrevId === null) { //try to find the current modules-one if (isset($this->arrModule["modul"])) { $strPrevId = class_module_system_module::getModuleByName($this->getArrModule("modul"), true)->getSystemid(); if (!validateSystemid($strPrevId)) { throw new class_exception("automatic determination of module-id failed ", class_exception::$level_FATALERROR); } } else { throw new class_exception("insert with no previd ", class_exception::$level_FATALERROR); } } if (!validateSystemid($strPrevId) && $strPrevId !== "0") { throw new class_exception("insert with erroneous prev-id ", class_exception::$level_FATALERROR); } //create the new systemrecord //store date-bit temporary $bitDates = $this->bitDatesChanges; $this->createSystemRecord($strPrevId, $this->getStrDisplayName()); $this->bitDatesChanges = $bitDates; if (validateSystemid($this->getStrSystemid())) { //Create the foreign records $objAnnotations = new class_reflection($this); $arrTargetTables = $objAnnotations->getAnnotationValuesFromClass("@targetTable"); if (count($arrTargetTables) > 0) { foreach ($arrTargetTables as $strOneConfig) { $arrSingleTable = explode(".", $strOneConfig); $strQuery = "INSERT INTO " . $this->objDB->encloseTableName(_dbprefix_ . $arrSingleTable[0]) . "\n (" . $this->objDB->encloseColumnName($arrSingleTable[1]) . ") VALUES\n (?) "; if (!$this->objDB->_pQuery($strQuery, array($this->getStrSystemid()))) { $bitCommit = false; } } } if (!$this->onInsertToDb()) { $bitCommit = false; } } else { throw new class_exception("creation of systemrecord failed", class_exception::$level_FATALERROR); } //all updates are done, start the "real" update class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_DBQUERIES); } //new prev-id? if ($strPrevId !== false && $this->getSystemid() != $strPrevId && (validateSystemid($strPrevId) || $strPrevId == "0")) { //validate the new prev id - it is not allowed to set a parent-node as a sub-node of its own child if (!$this->isSystemidChildNode($this->getSystemid(), $strPrevId)) { $this->setStrPrevId($strPrevId); } } //new comment? $this->setStrRecordComment($this->getStrDisplayName()); //Keep old and new status here, status changed event is being fired after record is completely updated (so after updateStateToDb()) $intOldStatus = $this->intOldRecordStatus; $intNewStatus = $this->intRecordStatus; //save back to the database $bitCommit = $bitCommit && $this->updateSystemrecord(); //update ourselves to the database if ($bitCommit && !$this->updateStateToDb()) { $bitCommit = false; } //now fire the status changed event if ($intOldStatus != $intNewStatus && $intOldStatus != -1) { class_core_eventdispatcher::getInstance()->notifyGenericListeners(class_system_eventidentifier::EVENT_SYSTEM_STATUSCHANGED, array($this->getSystemid(), $this, $intOldStatus, $intNewStatus)); } if ($bitCommit) { $this->objDB->transactionCommit(); //unlock the record $this->getLockManager()->unlockRecord(); class_logger::getInstance()->addLogRow("updateObjectToDb() succeeded for systemid " . $this->getSystemid() . " (" . $this->getRecordComment() . ")", class_logger::$levelInfo); } else { $this->objDB->transactionRollback(); class_logger::getInstance()->addLogRow("updateObjectToDb() failed for systemid " . $this->getSystemid() . " (" . $this->getRecordComment() . ")", class_logger::$levelWarning); } //call the recordUpdated-Listeners class_core_eventdispatcher::getInstance()->notifyGenericListeners(class_system_eventidentifier::EVENT_SYSTEM_RECORDUPDATED, array($this, $bitRecordCreated)); class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_DBQUERIES); return $bitCommit; }
public function install() { $strReturn = ""; //fetch navifolder-id $strNaviFolderId = ""; $arrFolder = class_module_pages_folder::getFolderList(); foreach ($arrFolder as $objOneFolder) { if ($objOneFolder->getStrName() == "mainnavigation") { $strNaviFolderId = $objOneFolder->getSystemid(); } } $strReturn .= "Creating voting\n"; $objVoting = new class_module_votings_voting(); if ($this->strContentLanguage == "de") { $objVoting->setStrTitle("Wie gefällt Ihnen unsere neue Webseite?"); } else { $objVoting->setStrTitle("How do you like our new website?"); } $objVoting->updateObjectToDb(); $objAnswer1 = new class_module_votings_answer(); $objAnswer2 = new class_module_votings_answer(); $objAnswer3 = new class_module_votings_answer(); if ($this->strContentLanguage == "de") { $objAnswer1->setStrText("Gefällt mir sehr gut!"); $objAnswer2->setStrText("Ausbaufähig..."); $objAnswer3->setStrText("Brennt im Kühlschrank immer Licht?"); } else { $objAnswer1->setStrText("I like it!"); $objAnswer2->setStrText("Well, work on it"); $objAnswer3->setStrText("Sunglasses at night"); } $objAnswer1->updateObjectToDb($objVoting->getSystemid()); $objAnswer2->updateObjectToDb($objVoting->getSystemid()); $objAnswer3->updateObjectToDb($objVoting->getSystemid()); $strReturn .= "Creating voting-page\n"; $objPage = new class_module_pages_page(); $objPage->setStrName("votings"); $objPage->setStrBrowsername("Votings"); $objPage->setStrTemplate("standard.tpl"); $objPage->updateObjectToDb($strNaviFolderId); $strFaqsPageId = $objPage->getSystemid(); $strReturn .= "ID of new page: " . $strFaqsPageId . "\n"; $strReturn .= "Adding votings-element 1 to new page\n"; if (class_module_pages_element::getElement("faqs") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager"); $objPagelement->setStrName("special"); $objPagelement->setStrElement("votings"); $objPagelement->updateObjectToDb($strFaqsPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_universal\n SET " . $this->objDB->encloseColumnName("int1") . " = ?,\n " . $this->objDB->encloseColumnName("char1") . " = ?,\n " . $this->objDB->encloseColumnName("char2") . " = ?\n WHERE content_id = ? "; if ($this->objDB->_pQuery($strQuery, array(0, $objVoting->getSystemid(), "votings.tpl", $strElementId))) { $strReturn .= "faqselement created.\n"; } else { $strReturn .= "Error creating faqselement.\n"; } } $strReturn .= "Adding votings-element 2 to new page\n"; if (class_module_pages_element::getElement("faqs") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager"); $objPagelement->setStrName("special"); $objPagelement->setStrElement("votings"); $objPagelement->updateObjectToDb($strFaqsPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_universal\n SET " . $this->objDB->encloseColumnName("int1") . " = ?,\n " . $this->objDB->encloseColumnName("char1") . " = ?,\n " . $this->objDB->encloseColumnName("char2") . " = ?\n WHERE content_id = ? "; if ($this->objDB->_pQuery($strQuery, array(1, $objVoting->getSystemid(), "votings.tpl", $strElementId))) { $strReturn .= "faqselement created.\n"; } else { $strReturn .= "Error creating faqselement.\n"; } } $strReturn .= "Adding headline-element to new page\n"; if (class_module_pages_element::getElement("row") != null) { $objPagelement = new class_module_pages_pageelement(); $objPagelement->setStrPlaceholder("headline_row"); $objPagelement->setStrName("headline"); $objPagelement->setStrElement("row"); $objPagelement->updateObjectToDb($strFaqsPageId); $strElementId = $objPagelement->getSystemid(); $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n SET paragraph_title = ?\n WHERE content_id = ?"; if ($this->objDB->_pQuery($strQuery, array("Votings", $strElementId))) { $strReturn .= "Headline element created.\n"; } else { $strReturn .= "Error creating headline element.\n"; } } return $strReturn; }