Example #1
0
 /**
  * Generates a new SystemRecord and, if needed, the corresponding record in the rights-table (here inheritance is default)
  * Returns the systemID used for this record
  *
  * @param string $strPrevId  Previous ID in the tree-structure
  * @param string $strComment Comment to identify the record
  * @return string The ID used/generated
  *
  * * @todo find ussages and make private
  */
 private function createSystemRecord($strPrevId, $strComment)
 {
     $strSystemId = generateSystemid();
     $this->setStrSystemid($strSystemId);
     //Correct prevID
     if ($strPrevId == "") {
         $strPrevId = 0;
     }
     $this->setStrPrevId($strPrevId);
     //determine the correct new sort-id - append by default
     if (class_module_system_module::getModuleByName("system") != null && version_compare(class_module_system_module::getModuleByName("system")->getStrVersion(), "4.7.5", "lt")) {
         $strQuery = "SELECT COUNT(*) FROM " . _dbprefix_ . "system WHERE system_prev_id = ? AND system_id != '0'";
     } else {
         $strQuery = "SELECT COUNT(*) FROM " . _dbprefix_ . "system WHERE system_prev_id = ? AND system_id != '0' AND system_deleted = 0";
     }
     $arrRow = $this->objDB->getPRow($strQuery, array($strPrevId), 0, false);
     $intSiblings = $arrRow["COUNT(*)"];
     $strComment = uniStrTrim(strip_tags($strComment), 240);
     if (class_module_system_module::getModuleByName("system") != null && version_compare(class_module_system_module::getModuleByName("system")->getStrVersion(), "4.7.5", "lt")) {
         //So, lets generate the record
         $strQuery = "INSERT INTO " . _dbprefix_ . "system\n                     ( system_id, system_prev_id, system_module_nr, system_owner, system_create_date, system_lm_user,\n                       system_lm_time, system_status, system_comment, system_sort, system_class) VALUES\n                     (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
         //Send the query to the db
         $this->objDB->_pQuery($strQuery, array($strSystemId, $strPrevId, $this->getIntModuleNr(), $this->objSession->getUserID(), class_date::getCurrentTimestamp(), $this->objSession->getUserID(), time(), (int) $this->getIntRecordStatus(), $strComment, $this->getNextSortValue($strPrevId), $this->getStrRecordClass()));
     } else {
         //So, lets generate the record
         $strQuery = "INSERT INTO " . _dbprefix_ . "system\n                     ( system_id, system_prev_id, system_module_nr, system_owner, system_create_date, system_lm_user,\n                       system_lm_time, system_status, system_comment, system_sort, system_class, system_deleted) VALUES\n                     (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
         //Send the query to the db
         $this->objDB->_pQuery($strQuery, array($strSystemId, $strPrevId, $this->getIntModuleNr(), $this->objSession->getUserID(), class_date::getCurrentTimestamp(), $this->objSession->getUserID(), time(), (int) $this->getIntRecordStatus(), $strComment, (int) ($intSiblings + 1), $this->getStrRecordClass(), $this->getIntRecordDeleted()));
     }
     //we need a Rights-Record
     $this->objDB->_pQuery("INSERT INTO " . _dbprefix_ . "system_right (right_id, right_inherit) VALUES (?, 1)", array($strSystemId));
     //update rights to inherit
     class_carrier::getInstance()->getObjRights()->setInherited(true, $strSystemId);
     class_logger::getInstance()->addLogRow("new system-record created: " . $strSystemId . " (" . $strComment . ")", class_logger::$levelInfo);
     $this->objDB->flushQueryCache();
     $this->internalInit();
     //reset the old values since we're having a new record
     $this->strOldPrevId = -1;
     $this->intOldRecordStatus = -1;
     return $strSystemId;
 }
 /**
  * Processes the internal change-array and creates all related records.
  *
  * @param array $arrChanges
  * @param interface_versionable|class_model $objSourceModel
  * @param string $strAction
  * @param bool $bitForceEntry
  * @param bool $bitDeleteAction
  *
  * @return bool
  */
 private function processChangeArray(array $arrChanges, interface_versionable $objSourceModel, $strAction, $bitForceEntry = false, $bitDeleteAction = null)
 {
     $bitReturn = true;
     if (is_array($arrChanges)) {
         $arrReducedChanges = array();
         $this->createReducedChangeSet($arrReducedChanges, $arrChanges, $strAction, $bitForceEntry, $bitDeleteAction);
         //collect all values in order to create a batch query
         foreach ($arrReducedChanges as $arrChangeSet) {
             $strOldvalue = $arrChangeSet["oldvalue"];
             $strNewvalue = $arrChangeSet["newvalue"];
             $strProperty = $arrChangeSet["property"];
             class_logger::getInstance()->addLogRow("change in class " . get_class($objSourceModel) . "@" . $strAction . " systemid: " . $objSourceModel->getSystemid() . " property: " . $strProperty . " old value: " . uniStrTrim($strOldvalue, 60) . " new value: " . uniStrTrim($strNewvalue, 60), class_logger::$levelInfo);
             $arrValues = array(generateSystemid(), class_date::getCurrentTimestamp(), $objSourceModel->getSystemid(), $objSourceModel->getPrevid(), class_carrier::getInstance()->getObjSession()->getUserID(), get_class($objSourceModel), $strAction, $strProperty, $strOldvalue, $strNewvalue);
             self::$arrInsertCache[self::getTableForClass(get_class($objSourceModel))][] = $arrValues;
         }
     }
     return $bitReturn;
 }
 public function install()
 {
     $strReturn = "";
     $objManager = new class_orm_schemamanager();
     // System table ---------------------------------------------------------------------------------
     $strReturn .= "Installing table system...\n";
     $arrFields = array();
     $arrFields["system_id"] = array("char20", false);
     $arrFields["system_prev_id"] = array("char20", false);
     $arrFields["system_module_nr"] = array("int", false);
     $arrFields["system_sort"] = array("int", true);
     $arrFields["system_owner"] = array("char20", true);
     $arrFields["system_create_date"] = array("long", true);
     $arrFields["system_lm_user"] = array("char20", true);
     $arrFields["system_lm_time"] = array("int", true);
     $arrFields["system_lock_id"] = array("char20", true);
     $arrFields["system_lock_time"] = array("int", true);
     $arrFields["system_status"] = array("int", true);
     $arrFields["system_class"] = array("char254", true);
     $arrFields["system_comment"] = array("char254", true);
     $arrFields["system_deleted"] = array("int", true);
     if (!$this->objDB->createTable("system", $arrFields, array("system_id"), array("system_prev_id", "system_module_nr", "system_sort", "system_owner", "system_create_date", "system_status", "system_lm_time", "system_lock_time", "system_deleted"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     //Rights table ----------------------------------------------------------------------------------
     $strReturn .= "Installing table system_right...\n";
     $arrFields = array();
     $arrFields["right_id"] = array("char20", false);
     $arrFields["right_inherit"] = array("int", true);
     $arrFields["right_view"] = array("text", true);
     $arrFields["right_edit"] = array("text", true);
     $arrFields["right_delete"] = array("text", true);
     $arrFields["right_right"] = array("text", true);
     $arrFields["right_right1"] = array("text", true);
     $arrFields["right_right2"] = array("text", true);
     $arrFields["right_right3"] = array("text", true);
     $arrFields["right_right4"] = array("text", true);
     $arrFields["right_right5"] = array("text", true);
     $arrFields["right_changelog"] = array("text", true);
     if (!$this->objDB->createTable("system_right", $arrFields, array("right_id"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // Modul table ----------------------------------------------------------------------------------
     $strReturn .= "Installing table system_module...\n";
     $objManager->createTable("class_module_system_module");
     // Date table -----------------------------------------------------------------------------------
     $strReturn .= "Installing table system_date...\n";
     $arrFields = array();
     $arrFields["system_date_id"] = array("char20", false);
     $arrFields["system_date_start"] = array("long", true);
     $arrFields["system_date_end"] = array("long", true);
     $arrFields["system_date_special"] = array("long", true);
     if (!$this->objDB->createTable("system_date", $arrFields, array("system_date_id"), array("system_date_start", "system_date_end", "system_date_special"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // Config table ---------------------------------------------------------------------------------
     $strReturn .= "Installing table system_config...\n";
     $arrFields = array();
     $arrFields["system_config_id"] = array("char20", false);
     $arrFields["system_config_name"] = array("char254", true);
     $arrFields["system_config_value"] = array("char254", true);
     $arrFields["system_config_type"] = array("int", true);
     $arrFields["system_config_module"] = array("int", true);
     if (!$this->objDB->createTable("system_config", $arrFields, array("system_config_id"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // User table -----------------------------------------------------------------------------------
     $strReturn .= "Installing table user...\n";
     $arrFields = array();
     $arrFields["user_id"] = array("char20", false);
     $arrFields["user_username"] = array("char254", true);
     $arrFields["user_subsystem"] = array("char254", true);
     $arrFields["user_logins"] = array("int", true);
     $arrFields["user_lastlogin"] = array("int", true);
     $arrFields["user_active"] = array("int", true);
     $arrFields["user_admin"] = array("int", true);
     $arrFields["user_portal"] = array("int", true);
     $arrFields["user_deleted"] = array("int", true);
     $arrFields["user_admin_skin"] = array("char254", true);
     $arrFields["user_admin_language"] = array("char254", true);
     $arrFields["user_admin_module"] = array("char254", true);
     $arrFields["user_authcode"] = array("char20", true);
     $arrFields["user_items_per_page"] = array("int", true);
     if (!$this->objDB->createTable("user", $arrFields, array("user_id"), array("user_username", "user_subsystem", "user_active", "user_deleted"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // User table kajona subsystem  -----------------------------------------------------------------
     $strReturn .= "Installing table user_kajona...\n";
     $arrFields = array();
     $arrFields["user_id"] = array("char20", false);
     $arrFields["user_pass"] = array("char254", true);
     $arrFields["user_salt"] = array("char20", true);
     $arrFields["user_email"] = array("char254", true);
     $arrFields["user_forename"] = array("char254", true);
     $arrFields["user_name"] = array("char254", true);
     $arrFields["user_street"] = array("char254", true);
     $arrFields["user_postal"] = array("char254", true);
     $arrFields["user_city"] = array("char254", true);
     $arrFields["user_tel"] = array("char254", true);
     $arrFields["user_mobile"] = array("char254", true);
     $arrFields["user_date"] = array("long", true);
     if (!$this->objDB->createTable("user_kajona", $arrFields, array("user_id"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // User group table -----------------------------------------------------------------------------
     $strReturn .= "Installing table user_group...\n";
     $arrFields = array();
     $arrFields["group_id"] = array("char20", false);
     $arrFields["group_name"] = array("char254", true);
     $arrFields["group_subsystem"] = array("char254", true);
     if (!$this->objDB->createTable("user_group", $arrFields, array("group_id"), array("group_name", "group_subsystem"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     $strReturn .= "Installing table user_group_kajona...\n";
     $arrFields = array();
     $arrFields["group_id"] = array("char20", false);
     $arrFields["group_desc"] = array("char254", true);
     if (!$this->objDB->createTable("user_group_kajona", $arrFields, array("group_id"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // User group_members table ---------------------------------------------------------------------
     $strReturn .= "Installing table user_kajona_members...\n";
     $arrFields = array();
     $arrFields["group_member_group_kajona_id"] = array("char20", false);
     $arrFields["group_member_user_kajona_id"] = array("char20", false);
     if (!$this->objDB->createTable("user_kajona_members", $arrFields, array("group_member_group_kajona_id", "group_member_user_kajona_id"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // User log table -------------------------------------------------------------------------------
     $strReturn .= "Installing table user_log...\n";
     $arrFields = array();
     $arrFields["user_log_id"] = array("char20", false);
     $arrFields["user_log_userid"] = array("char254", true);
     $arrFields["user_log_date"] = array("long", true);
     $arrFields["user_log_status"] = array("int", true);
     $arrFields["user_log_ip"] = array("char20", true);
     $arrFields["user_log_sessid"] = array("char20", true);
     $arrFields["user_log_enddate"] = array("long", true);
     if (!$this->objDB->createTable("user_log", $arrFields, array("user_log_id"), array("user_log_sessid"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // Sessionmgtm ----------------------------------------------------------------------------------
     $strReturn .= "Installing table session...\n";
     $arrFields = array();
     $arrFields["session_id"] = array("char20", false);
     $arrFields["session_phpid"] = array("char254", true);
     $arrFields["session_userid"] = array("char20", true);
     $arrFields["session_groupids"] = array("text", true);
     $arrFields["session_releasetime"] = array("int", true);
     $arrFields["session_loginstatus"] = array("char254", true);
     $arrFields["session_loginprovider"] = array("char20", true);
     $arrFields["session_lasturl"] = array("char500", true);
     if (!$this->objDB->createTable("session", $arrFields, array("session_id"), array("session_phpid", "session_releasetime", "session_userid"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     // caching --------------------------------------------------------------------------------------
     $strReturn .= "Installing table cache...\n";
     $arrFields = array();
     $arrFields["cache_id"] = array("char20", false);
     $arrFields["cache_source"] = array("char254", true);
     $arrFields["cache_hash1"] = array("char254", true);
     $arrFields["cache_hash2"] = array("char254", true);
     $arrFields["cache_language"] = array("char20", true);
     $arrFields["cache_content"] = array("longtext", true);
     $arrFields["cache_leasetime"] = array("int", true);
     $arrFields["cache_hits"] = array("int", true);
     if (!$this->objDB->createTable("cache", $arrFields, array("cache_id"), array("cache_source", "cache_hash1", "cache_leasetime", "cache_language"), false)) {
         $strReturn .= "An error occurred! ...\n";
     }
     //languages -------------------------------------------------------------------------------------
     $strReturn .= "Installing table languages...\n";
     $objManager->createTable("class_module_languages_language");
     $strReturn .= "Installing table languages_languageset...\n";
     $arrFields = array();
     $arrFields["languageset_id"] = array("char20", false);
     $arrFields["languageset_language"] = array("char20", true);
     $arrFields["languageset_systemid"] = array("char20", true);
     if (!$this->objDB->createTable("languages_languageset", $arrFields, array("languageset_id", "languageset_systemid"))) {
         $strReturn .= "An error occurred! ...\n";
     }
     //aspects --------------------------------------------------------------------------------------
     $strReturn .= "Installing table aspects...\n";
     $objManager->createTable("class_module_system_aspect");
     //changelog -------------------------------------------------------------------------------------
     $strReturn .= "Installing table changelog...\n";
     $this->installChangeTables();
     //messages
     $strReturn .= "Installing table messages...\n";
     $objManager->createTable("class_module_messaging_message");
     $objManager->createTable("class_module_messaging_config");
     //Now we have to register module by module
     //The Systemkernel
     $this->registerModule("system", _system_modul_id_, "", "class_module_system_admin.php", $this->objMetadata->getStrVersion(), true, "", "class_module_system_admin_xml.php");
     //The Rightsmodule
     $this->registerModule("right", _system_modul_id_, "", "class_module_right_admin.php", $this->objMetadata->getStrVersion(), false);
     //The Usermodule
     $this->registerModule("user", _user_modul_id_, "", "class_module_user_admin.php", $this->objMetadata->getStrVersion(), true);
     //languages
     $this->registerModule("languages", _languages_modul_id_, "class_modul_languages_portal.php", "class_module_languages_admin.php", $this->objMetadata->getStrVersion(), true);
     //messaging
     $this->registerModule("messaging", _messaging_module_id_, "", "class_module_messaging_admin.php", $this->objMetadata->getStrVersion(), true);
     //Registering a few constants
     $strReturn .= "Registering system-constants...\n";
     //And the default skin
     $this->registerConstant("_admin_skin_default_", "kajona_v4", class_module_system_setting::$int_TYPE_STRING, _user_modul_id_);
     //and a few system-settings
     $this->registerConstant("_system_portal_disable_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_);
     $this->registerConstant("_system_portal_disablepage_", "", class_module_system_setting::$int_TYPE_PAGE, _system_modul_id_);
     //New in 3.0: Number of db-dumps to hold
     $this->registerConstant("_system_dbdump_amount_", 5, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     //new in 3.0: mod-rewrite on / off
     $this->registerConstant("_system_mod_rewrite_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_);
     //New Constant: Max time to lock records
     $this->registerConstant("_system_lock_maxtime_", 7200, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     //Email to send error-reports
     $this->registerConstant("_system_admin_email_", $this->objSession->getSession("install_email"), class_module_system_setting::$int_TYPE_STRING, _system_modul_id_);
     $this->registerConstant("_system_email_defaultsender_", $this->objSession->getSession("install_email"), class_module_system_setting::$int_TYPE_STRING, _system_modul_id_);
     $this->registerConstant("_system_email_forcesender_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_);
     //3.0.2: user are allowed to change their settings?
     $this->registerConstant("_user_selfedit_", "true", class_module_system_setting::$int_TYPE_BOOL, _user_modul_id_);
     //3.1: nr of rows in admin
     $this->registerConstant("_admin_nr_of_rows_", 15, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     $this->registerConstant("_admin_only_https_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_);
     //3.1: remoteloader max cachtime --> default 60 min
     $this->registerConstant("_remoteloader_max_cachetime_", 60 * 60, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     //3.2: max session duration
     $this->registerConstant("_system_release_time_", 3600, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     //3.4: cache buster to be able to flush the browsers cache (JS and CSS files)
     $this->registerConstant("_system_browser_cachebuster_", 0, class_module_system_setting::$int_TYPE_INT, _system_modul_id_);
     //3.4: Adding constant _system_graph_type_ indicating the chart-engine to use
     $this->registerConstant("_system_graph_type_", "jqplot", class_module_system_setting::$int_TYPE_STRING, _system_modul_id_);
     //3.4: Enabling or disabling the internal changehistory
     $this->registerConstant("_system_changehistory_enabled_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_);
     $this->registerConstant("_system_timezone_", "", class_module_system_setting::$int_TYPE_STRING, _system_modul_id_);
     //Creating the admin & guest groups
     $objAdminGroup = new class_module_user_group();
     $objAdminGroup->setStrName("Admins");
     $objAdminGroup->updateObjectToDb();
     $strReturn .= "Registered Group Admins...\n";
     $objGuestGroup = new class_module_user_group();
     $objGuestGroup->setStrName("Guests");
     $objGuestGroup->updateObjectToDb();
     $strReturn .= "Registered Group Guests...\n";
     //Systemid of guest-user & admin group
     $strGuestID = $objGuestGroup->getSystemid();
     $strAdminID = $objAdminGroup->getSystemid();
     $this->registerConstant("_guests_group_id_", $strGuestID, class_module_system_setting::$int_TYPE_STRING, _user_modul_id_);
     $this->registerConstant("_admins_group_id_", $strAdminID, class_module_system_setting::$int_TYPE_STRING, _user_modul_id_);
     //Create an root-record for the tree
     //So, lets generate the record
     $strQuery = "INSERT INTO " . _dbprefix_ . "system\n                     ( system_id, system_prev_id, system_module_nr, system_create_date, system_lm_time, system_status, system_sort, system_class) VALUES\n                     (?, ?, ?, ?, ?, ?, ?, ?)";
     //Send the query to the db
     $this->objDB->_pQuery($strQuery, array(0, 0, _system_modul_id_, class_date::getCurrentTimestamp(), time(), 1, 1, "class_module_system_common"));
     //BUT: We have to modify the right-record of the root node, too
     $strGroupsAll = $strGuestID . "," . $strAdminID;
     $strGroupsAdmin = $strAdminID;
     $strQuery = "INSERT INTO " . _dbprefix_ . "system_right\n            (right_id, right_inherit, right_view, right_edit, right_delete, right_right, right_right1, right_right2, right_right3, right_right4, right_right5, right_changelog) VALUES\n            (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
     $this->objDB->_pQuery($strQuery, array(0, 0, $strGroupsAll, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin));
     $this->objDB->flushQueryCache();
     $strReturn .= "Modified root-rights....\n";
     class_carrier::getInstance()->getObjRights()->rebuildRightsStructure();
     $strReturn .= "Rebuilt rights structures...\n";
     //Creating an admin-user
     $strUsername = "******";
     $strPassword = "******";
     $strEmail = "";
     //Login-Data given from installer?
     if ($this->objSession->getSession("install_username") !== false && $this->objSession->getSession("install_username") != "" && $this->objSession->getSession("install_password") !== false && $this->objSession->getSession("install_password") != "") {
         $strUsername = $this->objSession->getSession("install_username");
         $strPassword = $this->objSession->getSession("install_password");
         $strEmail = $this->objSession->getSession("install_email");
     }
     //create a default language
     $strReturn .= "Creating new default-language\n";
     $objLanguage = new class_module_languages_language();
     if ($this->strContentLanguage == "de") {
         $objLanguage->setStrName("de");
     } else {
         $objLanguage->setStrName("en");
     }
     $objLanguage->setBitDefault(true);
     $objLanguage->updateObjectToDb();
     $strReturn .= "ID of new language: " . $objLanguage->getSystemid() . "\n";
     //the admin-language
     $strAdminLanguage = $this->objSession->getAdminLanguage();
     //creating a new default-aspect
     $strReturn .= "Registering new default aspects...\n";
     $objAspect = new class_module_system_aspect();
     $objAspect->setStrName("content");
     $objAspect->setBitDefault(true);
     $objAspect->updateObjectToDb();
     class_module_system_aspect::setCurrentAspectId($objAspect->getSystemid());
     $objAspect = new class_module_system_aspect();
     $objAspect->setStrName("management");
     $objAspect->updateObjectToDb();
     $objUser = new class_module_user_user();
     $objUser->setStrUsername($strUsername);
     $objUser->setIntActive(1);
     $objUser->setIntAdmin(1);
     $objUser->setStrAdminlanguage($strAdminLanguage);
     $objUser->updateObjectToDb();
     $objUser->getObjSourceUser()->setStrPass($strPassword);
     $objUser->getObjSourceUser()->setStrEmail($strEmail);
     $objUser->getObjSourceUser()->updateObjectToDb();
     $strReturn .= "Created User Admin: <strong>Username: "******", Password: ***********</strong> ...\n";
     //The Admin should belong to the admin-Group
     $objAdminGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser());
     $strReturn .= "Registered Admin in Admin-Group...\n";
     $strReturn .= "Assigning modules to default aspects...\n";
     $objModule = class_module_system_module::getModuleByName("system");
     $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid());
     $objModule->updateObjectToDb();
     $objModule = class_module_system_module::getModuleByName("user");
     $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid());
     $objModule->updateObjectToDb();
     $objModule = class_module_system_module::getModuleByName("languages");
     $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid());
     $objModule->updateObjectToDb();
     $strReturn .= "Trying to copy the *.root files to top-level...\n";
     $arrFiles = array("index.php", "image.php", "xml.php", ".htaccess", "v3_v4_postupdate.php");
     foreach ($arrFiles as $strOneFile) {
         if (!file_exists(_realpath_ . "/" . $strOneFile) && is_file(class_resourceloader::getInstance()->getCorePathForModule("module_system", true) . "/module_system/" . $strOneFile . ".root")) {
             if (!copy(class_resourceloader::getInstance()->getCorePathForModule("module_system", true) . "/module_system/" . $strOneFile . ".root", _realpath_ . "/" . $strOneFile)) {
                 $strReturn .= "<b>Copying " . $strOneFile . ".root to top level failed!!!</b>";
             }
         }
     }
     $strReturn .= "Setting messaging to pos 1 in navigation.../n";
     $objModule = class_module_system_module::getModuleByName("messaging");
     $objModule->setAbsolutePosition(1);
     return $strReturn;
 }
Example #4
0
echo "| DATECONVERTER                                                                 |\n";
echo "|                                                                               |\n";
echo "+-------------------------------------------------------------------------------+\n";
echo "<form method=\"post\">";
echo "--- UNIX timestamp handling -----------------------------------------------------\n\n";
echo "integer to date: \n";
echo "\tinteger: <input type=\"text\" value=\"" . getPost("inttime") . "\" name=\"inttime\"/>";
echo "  --> " . timeToString(getPost("inttime")) . "\n";
echo "date to integer: \n";
echo "\tdate: d:<input type=\"text\" value=\"" . getPost("strday") . "\" name=\"strday\" size=\"2\" />";
echo " m:<input type=\"text\" value=\"" . getPost("strmonth") . "\" name=\"strmonth\" size=\"2\" />";
echo " y:<input type=\"text\" value=\"" . getPost("stryear") . "\" name=\"stryear\" size=\"4\" />";
echo "  --> " . strtotime(getPost("stryear") . "-" . getPost("strmonth") . "-" . getPost("strday")) . "\n";
echo "\n<input type=\"submit\" value=\"submit\" />\n";
echo "\n--- Kajona timestamp handling ---------------------------------------------------\n\n";
echo "integer to date: \n";
$objDateFromInt = new class_date();
$objDateFromInt->setTimeInOldStyle(getPost("kajonainttime"));
echo "\tinteger: <input type=\"text\" value=\"" . getPost("kajonainttime") . "\" name=\"kajonainttime\"/>";
echo "  --> " . $objDateFromInt . "\n";
$objDateFromInt = new class_date(getPost("kajonainttime"));
echo "\tinteger: <input type=\"text\" value=\"" . getPost("kajonainttime") . "\" name=\"kajonainttime\"/>";
echo "  --> " . $objDateFromInt . "\n";
echo "\n<input type=\"submit\" value=\"submit\" />\n";
echo "<input type='hidden' name='debugfile' value='" . basename(__FILE__) . "'>";
echo "</form>";
echo "\ncurrent time: " . class_date::getCurrentTimestamp() . "\n";
echo "\n\n";
echo "+-------------------------------------------------------------------------------+\n";
echo "| (c) www.kajona.de                                                             |\n";
echo "+-------------------------------------------------------------------------------+\n";
 /**
  * Updates the users' log-entry with the current logout-timestamp
  * @static
  * @return bool
  */
 public static function registerLogout()
 {
     $strQuery = "UPDATE " . _dbprefix_ . "user_log\n                        SET user_log_enddate = ?\n                      WHERE user_log_sessid = ?";
     return class_carrier::getInstance()->getObjDB()->getInstance()->_pQuery($strQuery, array(class_date::getCurrentTimestamp(), class_carrier::getInstance()->getObjSession()->getInternalSessionId()));
 }
 /**
  * Generates an entry in the logtable
  *
  * @param $strQueryParams
  * @param $strIp
  * @param $strHostname
  */
 public static function generateDlLog($strQueryParams, $strIp, $strHostname)
 {
     $objDB = class_carrier::getInstance()->getObjDB();
     $strQuery = "INSERT INTO " . _dbprefix_ . "packageserver_log\n\t                   (log_id, log_query, log_ip, log_hostname, log_date) VALUES\n\t                   (?, ?, ?, ?, ?)";
     $objDB->_pQuery($strQuery, array(generateSystemid(), $strQueryParams, $strIp, $strHostname, class_date::getCurrentTimestamp()));
 }
 /**
  * Loads all news from the database
  * if passed, the filter is used to load the news of the given category
  *
  * @param string $strFilter
  * @param int $intAmount
  *
  * @return mixed
  * @static
  */
 public static function getNewsList($strFilter = "", $intAmount = 0)
 {
     $objORM = new class_orm_objectlist();
     $intNow = class_date::getCurrentTimestamp();
     $arrParams = array($intNow, $intNow, $intNow);
     if ($strFilter != "") {
         $strQuery = "SELECT *\n\t\t\t\t\t\t\tFROM  " . _dbprefix_ . "news,\n\t\t\t\t\t\t\t      " . _dbprefix_ . "news_member,\n\t\t\t\t\t\t\t      " . _dbprefix_ . "system_right,\n\t\t\t\t\t\t\t      " . _dbprefix_ . "system\n\t\t\t\t\t    LEFT JOIN " . _dbprefix_ . "system_date\n\t\t\t\t\t           ON system_id = system_date_id\n\t\t\t\t\t\t\tWHERE system_id = news_id\n\t\t\t\t\t\t\t  AND news_id = newsmem_news\n\t\t\t\t\t\t\t  AND system_id = right_id\n\t\t\t\t\t\t\t  AND system_status = 1\n\t\t\t\t\t\t\t  AND (system_date_special IS NULL OR (system_date_special > ? OR system_date_special = 0))\n\t\t\t\t\t\t\t  AND (system_date_start IS NULL or(system_date_start < ? OR system_date_start = 0))\n\t\t\t\t\t\t\t  AND (system_date_end IS NULL or (system_date_end > ? OR system_date_end = 0))\n\t\t\t\t\t\t\t  AND newsmem_category = ?\n\t\t\t\t\t\t\t  " . $objORM->getDeletedWhereRestriction() . "\n\t\t\t\t\t\t\tORDER BY system_date_start DESC";
         $arrParams[] = $strFilter;
     } else {
         $strQuery = "SELECT *\n\t\t\t\t\t\t\tFROM " . _dbprefix_ . "news,\n\t\t\t\t\t\t\t      " . _dbprefix_ . "system_right,\n\t\t\t\t\t\t\t      " . _dbprefix_ . "system\n\t\t\t\t\t\tLEFT JOIN " . _dbprefix_ . "system_date\n\t\t\t\t\t           ON system_id = system_date_id\n\t\t\t\t\t\t\tWHERE system_id = news_id\n\t\t\t\t\t\t\t  AND system_status = 1\n\t\t\t\t\t\t\t  AND system_id = right_id\n\t\t\t\t\t\t\t  AND (system_date_special IS NULL OR (system_date_special > ? OR system_date_special = 0))\n\t\t\t\t\t\t\t  AND (system_date_start IS NULL or(system_date_start < ? OR system_date_start = 0))\n\t\t\t\t\t\t\t  AND (system_date_end IS NULL or (system_date_end > ? OR system_date_end = 0))\n\t\t\t\t\t\t\t  " . $objORM->getDeletedWhereRestriction() . "\n\t\t\t\t\t\t\tORDER BY system_date_start DESC";
     }
     $intStart = null;
     $intEnd = null;
     if ($intAmount > 0) {
         $intStart = 0;
         $intEnd = $intAmount - 1;
     }
     $arrIds = class_carrier::getInstance()->getObjDB()->getPArray($strQuery, $arrParams, $intStart, $intEnd);
     class_orm_rowcache::addArrayOfInitRows($arrIds);
     $arrReturn = array();
     foreach ($arrIds as $arrOneId) {
         $arrReturn[] = class_objectfactory::getInstance()->getObject($arrOneId["system_id"]);
     }
     return $arrReturn;
 }
 /**
  * @return void
  */
 public function schedule()
 {
     $objDate = clone $this->objWorkflow->getObjTriggerdate();
     //reschedule
     for ($intI = 0; $intI < $this->intIntervalDays; $intI++) {
         $objDate->setNextDay();
     }
     $objDate->setIntHour($this->intSendTime)->setIntMin(0)->setIntSec(0);
     if ($objDate->getLongTimestamp() < class_date::getCurrentTimestamp()) {
         $objDate = new class_date();
         $objDate->setNextDay()->setIntHour($this->intSendTime)->setIntMin(0)->setIntSec(0);
     }
     $this->objWorkflow->setObjTriggerdate($objDate);
 }
 /**
  * Returns a single view of a single voting.
  * The mode is choosen from the element-config.
  *
  * @return string
  * @permissions view
  */
 public function actionList()
 {
     $strReturn = "";
     //load the associated voting
     $objVoting = new class_module_votings_voting($this->arrElementData["char1"]);
     //view-permissions given?
     if ($objVoting->rightView()) {
         $strVotingContent = "";
         if ($this->arrElementData["int1"] == 0) {
             //voting mode
             //permissions sufficient?
             if ($objVoting->rightRight1()) {
                 //check the start n end dates
                 $objDateStart = $objVoting->getObjStartDate();
                 $objDateEnd = $objVoting->getObjEndDate();
                 $bitDatesAllow = true;
                 if ($objDateStart != null && $objDateStart->getLongTimestamp() > class_date::getCurrentTimestamp()) {
                     $bitDatesAllow = false;
                 }
                 if ($objDateEnd != null && $objDateEnd->getLongTimestamp() < class_date::getCurrentTimestamp()) {
                     $bitDatesAllow = false;
                 }
                 //already voted before?
                 if (in_array($objVoting->getSystemid(), $this->arrCookieValues)) {
                     $strVotingContent = $this->getLang("error_voted");
                 } else {
                     if (!$bitDatesAllow) {
                         $strVotingContent = $this->getLang("error_dates");
                     } else {
                         $strAnswers = "";
                         $strAnswerTemplateID = $strListTemplateID = $this->objTemplate->readTemplate("/module_votings/" . $this->arrElementData["char2"], "voting_voting_option");
                         //load the list of answers
                         /** @var class_module_votings_answer $objOneAnswer */
                         foreach (class_module_votings_answer::getObjectList($objVoting->getSystemid()) as $objOneAnswer) {
                             if ($objOneAnswer->getIntRecordStatus() == 0) {
                                 continue;
                             }
                             $arrTemplate = array();
                             $arrTemplate["voting_systemid"] = $objVoting->getSystemid();
                             $arrTemplate["answer_systemid"] = $objOneAnswer->getSystemid();
                             $arrTemplate["answer_text"] = $objOneAnswer->getStrText();
                             $strAnswers .= $this->fillTemplate($arrTemplate, $strAnswerTemplateID);
                         }
                         //create the wrapper
                         $strFormTemplateID = $strListTemplateID = $this->objTemplate->readTemplate("/module_votings/" . $this->arrElementData["char2"], "voting_voting");
                         $arrTemplate = array();
                         $arrTemplate["voting_answers"] = $strAnswers;
                         $arrTemplate["voting_systemid"] = $objVoting->getSystemid();
                         $arrTemplate["voting_action"] = class_link::getLinkPortalHref($this->getPagename(), "", "submitVoting");
                         $strVotingContent .= $this->fillTemplate($arrTemplate, $strFormTemplateID);
                     }
                 }
             } else {
                 $strVotingContent = $this->getLang("commons_error_permissions");
             }
         } else {
             if ($this->arrElementData["int1"] == 1) {
                 //result mode
                 $strAnswers = "";
                 $intTotalVotes = 0;
                 $strAnswerTemplateID = $this->objTemplate->readTemplate("/module_votings/" . $this->arrElementData["char2"], "voting_result_answer");
                 //first run to sum up
                 /** @var class_module_votings_answer $objOneAnswer */
                 foreach (class_module_votings_answer::getObjectList($objVoting->getSystemid()) as $objOneAnswer) {
                     if ($objOneAnswer->getIntRecordStatus() == 0) {
                         continue;
                     }
                     $intTotalVotes += $objOneAnswer->getIntHits();
                 }
                 /** @var class_module_votings_answer $objOneAnswer */
                 foreach (class_module_votings_answer::getObjectList($objVoting->getSystemid()) as $objOneAnswer) {
                     if ($objOneAnswer->getIntRecordStatus() == 0) {
                         continue;
                     }
                     $arrTemplate = array();
                     $arrTemplate["answer_text"] = $objOneAnswer->getStrText();
                     $arrTemplate["answer_hits"] = $objOneAnswer->getIntHits();
                     $arrTemplate["answer_systemid"] = $objOneAnswer->getSystemid();
                     $arrTemplate["answer_percent"] = "0";
                     if ($objOneAnswer->getIntHits() > 0) {
                         $arrTemplate["answer_percent"] = (int) (100 / ($intTotalVotes / $objOneAnswer->getIntHits()));
                     }
                     $strAnswers .= $this->fillTemplate($arrTemplate, $strAnswerTemplateID);
                 }
                 $strResultTemplateID = $this->objTemplate->readTemplate("/module_votings/" . $this->arrElementData["char2"], "voting_result");
                 $arrTemplate = array();
                 $arrTemplate["voting_answers"] = $strAnswers;
                 $arrTemplate["voting_hits"] = $intTotalVotes;
                 $strVotingContent .= $this->fillTemplate($arrTemplate, $strResultTemplateID);
             }
         }
         $strListTemplateID = $this->objTemplate->readTemplate("/module_votings/" . $this->arrElementData["char2"], "voting_wrapper");
         $arrTemplate = array();
         $arrTemplate["voting_systemid"] = $objVoting->getSystemid();
         $arrTemplate["voting_title"] = $objVoting->getStrTitle();
         $arrTemplate["voting_content"] = $strVotingContent;
         $strReturn .= $this->fillTemplate($arrTemplate, $strListTemplateID);
     } else {
         $strReturn = $this->getLang("commons_error_permissions");
     }
     return $strReturn;
 }
 /**
  * Counts all workflows related with a given class.
  * By default limited to those with a exceeded trigger-date, so valid to be run
  *
  * @param $strClass
  * @param bool $bitOnlyScheduled
  * @return class_module_workflows_workflow[]
  */
 public static function getWorkflowsForClassCount($strClass, $bitOnlyScheduled = true)
 {
     $objOrmMapper = new class_orm_objectlist();
     if ($bitOnlyScheduled) {
         $objOrmMapper->addWhereRestriction(new class_orm_objectlist_restriction("AND ( workflows_state = ? OR workflows_state = ? )", array((int) self::$INT_STATE_SCHEDULED, (int) self::$INT_STATE_NEW)));
         $objOrmMapper->addWhereRestriction(new class_orm_objectlist_restriction("AND ( system_date_start > ? OR system_date_start = 0 )", array(class_date::getCurrentTimestamp())));
     }
     $objOrmMapper->addWhereRestriction(new class_orm_objectlist_property_restriction("strClass", class_orm_comparator_enum::Equal(), $strClass));
     $objOrmMapper->addOrderBy(new class_orm_objectlist_orderby("system_date_start DESC"));
     return $objOrmMapper->getObjectCount("class_module_workflows_workflow");
 }
 /**
  * Loads all news from the db assigned to the passed cat
  *
  * @param int $intMode 0 = regular, 1 = archive
  * @param int|string $strCat
  * @param int $intOrder 0 = descending, 1 = ascending
  * @param int $intStart
  * @param int $intEnd
  *
  * @return class_module_news_news[]
  * @static
  */
 public static function loadListNewsPortal($intMode, $strCat = 0, $intOrder = 0, $intStart = null, $intEnd = null)
 {
     $arrParams = array();
     $longNow = class_date::getCurrentTimestamp();
     //Get Timeintervall
     if ($intMode == "0") {
         //Regular news
         $strTime = "AND (system_date_special IS NULL OR (system_date_special > ? OR system_date_special = 0))";
     } elseif ($intMode == "1") {
         //Archivnews
         $strTime = "AND (system_date_special < ? AND system_date_special IS NOT NULL AND system_date_special != 0)";
     } else {
         $strTime = "";
     }
     $objOrm = new class_orm_objectlist();
     $strWhere = $objOrm->getDeletedWhereRestriction();
     //check if news should be ordered de- or ascending
     if ($intOrder == 0) {
         $strOrder = "DESC";
     } else {
         $strOrder = "ASC";
     }
     if ($strCat != "0") {
         $strQuery = "SELECT *\n                            FROM " . _dbprefix_ . "news,\n                                 " . _dbprefix_ . "news_member,\n                                 " . _dbprefix_ . "system_right,\n                                 " . _dbprefix_ . "system\n                       LEFT JOIN " . _dbprefix_ . "system_date\n                              ON system_id = system_date_id\n                            WHERE system_id = news_id\n                              AND news_id = newsmem_news\n                              AND system_id = right_id\n                              AND newsmem_category = ?\n                              AND system_status = 1\n                              AND (system_date_start IS NULL or(system_date_start < ? OR system_date_start = 0))\n                                " . $strTime . $strWhere . "\n                              AND (system_date_end IS NULL or (system_date_end > ? OR system_date_end = 0))\n                            ORDER BY system_date_start " . $strOrder . ", system_create_date DESC";
         $arrParams[] = $strCat;
         $arrParams[] = $longNow;
         if ($strTime != "") {
             $arrParams[] = $longNow;
         }
         $arrParams[] = $longNow;
     } else {
         $strQuery = "SELECT *\n                            FROM " . _dbprefix_ . "news,\n                                 " . _dbprefix_ . "system_right,\n                                 " . _dbprefix_ . "system\n                        LEFT JOIN " . _dbprefix_ . "system_date\n                               ON system_id = system_date_id\n                            WHERE system_id = news_id\n                              AND system_id = right_id\n                              AND system_status = 1\n                              AND (system_date_start IS NULL or(system_date_start < ? OR system_date_start = 0))\n                                " . $strTime . $strWhere . "\n                              AND (system_date_end IS NULL or (system_date_end > ? OR system_date_end = 0))\n                            ORDER BY system_date_start " . $strOrder . ", system_create_date DESC";
         $arrParams[] = $longNow;
         if ($strTime != "") {
             $arrParams[] = $longNow;
         }
         $arrParams[] = $longNow;
     }
     $arrIds = class_carrier::getInstance()->getObjDB()->getPArray($strQuery, $arrParams, $intStart, $intEnd);
     class_orm_rowcache::addArrayOfInitRows($arrIds);
     $arrReturn = array();
     foreach ($arrIds as $arrOneId) {
         $arrReturn[] = class_objectfactory::getInstance()->getObject($arrOneId["system_id"]);
     }
     return $arrReturn;
 }