/** * Here comes the magic, generation a where restriction out of the passed property name and the comparator * * @return string * @throws class_orm_exception */ public function getStrWhere() { $objReflection = new class_reflection($this->getStrTargetClass()); $strPropertyValue = $objReflection->getAnnotationValueForProperty($this->strProperty, class_orm_base::STR_ANNOTATION_TABLECOLUMN); if ($strPropertyValue == null) { throw new class_orm_exception("Failed to load annotation " . class_orm_base::STR_ANNOTATION_TABLECOLUMN . " for property " . $this->strProperty . "@" . $this->getStrTargetClass(), class_exception::$level_ERROR); } return " AND " . $strPropertyValue . " " . $this->objComparator->getEnumAsSqlString() . " ? "; }
public function getEnumAsSqlString() { if ($this->equals(class_orm_comparator_enum::GreaterThen())) { return ">"; } if ($this->equals(class_orm_comparator_enum::GreaterThenEquals())) { return ">="; } if ($this->equals(class_orm_comparator_enum::LessThen())) { return "<"; } if ($this->equals(class_orm_comparator_enum::LessThenEquals())) { return "<="; } if ($this->equals(class_orm_comparator_enum::Equal())) { return "="; } if ($this->equals(class_orm_comparator_enum::NotEqual())) { return "!="; } if ($this->equals(class_orm_comparator_enum::Like())) { return "LIKE"; } throw new class_orm_exception("Unknown sql comparator", class_exception::$level_ERROR); }
/** * Triggered as soon as a record is updated * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { $objRecord = $arrArguments[0]; if ($objRecord instanceof class_module_packagemanager_template) { if ($objRecord->getIntRecordStatus() == 1) { $objOrm = new class_orm_objectlist(); $objOrm->addWhereRestriction(new class_orm_objectlist_systemstatus_restriction(class_orm_comparator_enum::Equal(), 1)); $arrPacks = $objOrm->getObjectList("class_module_packagemanager_template"); foreach ($arrPacks as $objPack) { if ($objPack->getSystemid() != $objRecord->getSystemid()) { $objPack->setIntRecordStatus(0); $objPack->updateObjectToDb(); } } //update the active-pack constant $objSetting = class_module_system_setting::getConfigByName("_packagemanager_defaulttemplate_"); if ($objSetting !== null) { $objSetting->setStrValue($objRecord->getStrName()); $objSetting->updateObjectToDb(); } class_cache::flushCache("class_element_portal"); } } return true; }
/** * Implementing callback to react on user-delete events * * Called whenever a record was deleted using the common methods. * Implement this method to be notified when a record is deleted, e.g. to to additional cleanups afterwards. * There's no need to register the listener, this is done automatically. * * Make sure to return a matching boolean-value, otherwise the transaction may be rolled back. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; if ($strSourceClass == "class_module_user_user" && validateSystemid($strSystemid)) { $objORM = new class_orm_objectlist(); $objORM->addWhereRestriction(new class_orm_objectlist_property_restriction("strUser", class_orm_comparator_enum::Equal(), $strSystemid)); $objORM->setObjHandleLogicalDeleted(class_orm_deletedhandling_enum::INCLUDED()); $arrWidgets = $objORM->getObjectList("class_module_dashboard_widget"); foreach ($arrWidgets as $objWidget) { $objWidget->deleteObjectFromDatabase(); } } return true; }
/** * Searches for ratings belonging to the systemid * to be deleted. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; $bitReturn = true; //ratings installed as a module? if ($strSourceClass == "class_module_rating_rate") { //delete history entries of the current rating return class_carrier::getInstance()->getObjDB()->_pQuery("DELETE FROM " . _dbprefix_ . "rating_history" . " WHERE rating_history_rating=? ", array($strSystemid)); } //if another record was deleted, remove the ratings alltogether $objOrmList = new class_orm_objectlist(); $objOrmList->addWhereRestriction(new class_orm_objectlist_property_restriction("strRatingSystemid", class_orm_comparator_enum::Equal(), $strSystemid)); $arrRatings = $objOrmList->getObjectList("class_module_rating_rate"); foreach ($arrRatings as $objRating) { $bitReturn = $bitReturn && $objRating->deleteObjectFromDatabase(); } return $bitReturn; }
/** * Returns the number of messages for a single user - ignoring the messages states. * * @param string $strUserid * @param bool $bitOnlyUnread * * @return int */ public static function getNumberOfMessagesForUser($strUserid, $bitOnlyUnread = false) { $objOrm = new class_orm_objectlist(); $objOrm->addWhereRestriction(new class_orm_objectlist_property_restriction("strUser", class_orm_comparator_enum::Equal(), $strUserid)); if ($bitOnlyUnread) { $objOrm->addWhereRestriction(new class_orm_objectlist_restriction("AND (message_read IS NULL OR message_read = 0 )")); } return $objOrm->getObjectCount(__CLASS__); }
/** * Creates a list of tags matching the passed filter. * * @param string $strFilter * @return class_module_tags_tag[] */ public static function getTagsByFilter($strFilter) { $objORM = new class_orm_objectlist(); $objORM->addWhereRestriction(new class_orm_objectlist_property_restriction("strName", class_orm_comparator_enum::Like(), trim($strFilter . "%"))); $objORM->addOrderBy(new class_orm_objectlist_orderby("tags_tag_name ASC")); return $objORM->getObjectList(get_called_class()); }
/** * Looks up the posts available * * @param string $strPrevID * @param bool $bitJustActive * * @return int * @static */ public static function getPostsCount($strPrevID = "", $bitJustActive = false) { $objORM = new class_orm_objectlist(); if ($bitJustActive) { $objORM->addWhereRestriction(new class_orm_objectlist_systemstatus_restriction(class_orm_comparator_enum::Equal(), 1)); } return $objORM->getObjectCount(get_called_class(), $strPrevID); }
/** * Returns a list of events available * * @param bool|int $intStart * @param bool|int $intEnd * @param class_date $objStartDate * @param class_Date $objEndDate * @param bool $bitOnlyActive * @param int $intOrder * @param null $intStatusFilter * * @return class_module_eventmanager_event[] */ public static function getAllEvents($intStart = false, $intEnd = false, class_date $objStartDate = null, class_date $objEndDate = null, $bitOnlyActive = false, $intOrder = 0, $intStatusFilter = null) { $objORM = new class_orm_objectlist(); if ($objStartDate != null && $objEndDate != null) { $objORM->addWhereRestriction(new class_orm_objectlist_restriction("AND (system_date_start > ? AND system_date_start <= ?", array($objStartDate->getLongTimestamp(), $objEndDate->getLongTimestamp()))); } if ($intStatusFilter != null) { $objORM->addWhereRestriction(new class_orm_objectlist_restriction("AND em_ev_eventstatus = ?", array($intStatusFilter))); } if ($bitOnlyActive) { $objORM->addWhereRestriction(new class_orm_objectlist_systemstatus_restriction(class_orm_comparator_enum::Equal(), 1)); } $objORM->addOrderBy(new class_orm_objectlist_orderby("system_date_start " . ($intOrder == "1" ? " ASC " : " DESC "))); $objORM->addOrderBy(new class_orm_objectlist_orderby("em_ev_title ASC ")); return $objORM->getObjectList(get_called_class(), "", $intStart, $intEnd); }
/** * Returns the number of aspects installed in the system * * @return int */ public static function getActiveObjectCount() { $objOrm = new class_orm_objectlist(); $objOrm->addWhereRestriction(new class_orm_objectlist_systemstatus_restriction(class_orm_comparator_enum::NotEqual(), 0)); return $objOrm->getObjectCount(__CLASS__); }
/** * Looks up a navigation by its name * * @param string $strName * * @return class_module_navigation_tree * @static */ public static function getNavigationByName($strName) { $objOrm = new class_orm_objectlist(); $objOrm->addWhereRestriction(new class_orm_objectlist_property_restriction("strName", class_orm_comparator_enum::Equal(), $strName)); $arrRows = $objOrm->getObjectList("class_module_navigation_tree", class_module_system_module::getModuleIdByNr(_navigation_modul_id_)); if (count($arrRows) == 1) { return $arrRows[0]; } return null; }
/** * Counts the answers related to the current question * * @param bool $bitOnlyActive * * @return int */ public function getAllAnswersCount($bitOnlyActive = false) { $objOrm = new class_orm_objectlist(); if ($bitOnlyActive) { $objOrm->addWhereRestriction(new class_orm_objectlist_systemstatus_restriction(class_orm_comparator_enum::NotEqual(), 0)); } return $objOrm->getObjectCount(__CLASS__); }
/** * Loads all workflows for a given user * By default limited to those with a exceeded trigger-date, so valid to be run * * @param array $arrUserids * @param bool|int $intStart * @param bool|int $intEnd * @return class_module_workflows_workflow[] */ public static function getPendingWorkflowsForUser($arrUserids, $intStart = false, $intEnd = false) { $objOrmMapper = new class_orm_objectlist(); $objOrmMapper->addWhereRestriction(new class_orm_objectlist_property_restriction("intState", class_orm_comparator_enum::Equal(), (int) self::$INT_STATE_SCHEDULED)); $objOrmMapper->addWhereRestriction(self::getUserWhereStatement($arrUserids)); $objOrmMapper->addOrderBy(new class_orm_objectlist_orderby("system_date_start DESC")); $objOrmMapper->addOrderBy(new class_orm_objectlist_orderby("system_sort DESC")); return $objOrmMapper->getObjectList("class_module_workflows_workflow", "", $intStart, $intEnd); }
/** * Returns the language requested. * If the language doesn't exist, false is returned * * @param string $strName * * @static * @return class_module_languages_language or false */ public static function getLanguageByName($strName) { $objOrmList = new class_orm_objectlist(); $objOrmList->addWhereRestriction(new class_orm_objectlist_property_restriction("strName", class_orm_comparator_enum::Equal(), $strName)); $arrReturn = $objOrmList->getObjectList(__CLASS__); if (count($arrReturn) > 0) { return $arrReturn[0]; } else { return false; } }