Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
 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;
 }