/** * Delete the feed */ public function delete() { if (!$this->getId()) { return; } db()->deleteMultiple(RDR_Entry::getByCondition("feed = {0}", array($this))); $cats = RDR_Category::getByQuery("\n SELECT o FROM RDR_Category_feeds\n WHERE k = " . $this->getId() . "\n "); foreach ($cats as $category) { $feeds = $category->feeds; if ($feeds) { foreach ($feeds as $key => $feed) { if (compare($this, $feed)) { unset($feeds[$key]); } if (count($feeds) != count($category->feeds)) { $category->store(); } } } } parent::delete(); RDR_Cleanup::cleanupFlags(); }
/** * Set members in the given object * * @param CHOQ_DB_Object $object */ public function setObjectMembersBySubmittedValues(CHOQ_DB_Object $object) { foreach ($this->fields as $field) { # if field was disabled than ignore it if ($field->attr->get("disabled")) { continue; } if ($field->dbTypeMember) { $value = $field->getSubmittedValue(true); if (is_array($value)) { $object->{$field->dbTypeMember->name} = $value; } else { preg_match("~\\[(.*?)\\]~i", $field->name, $arrayKey); if ($arrayKey) { $key = $arrayKey[1]; $object->remove($field->dbTypeMember->name, $key); if ($value !== null) { $object->add($field->dbTypeMember->name, $value, $key); } } else { $object->{$field->dbTypeMember->name} = $value; } } } } }
/** * Remove a value from a array member * * @param string $property * @param string|int|CHOQ_DB_Object $key * @return self */ public function remove($property, $key) { $member = $this->_getMember($property); if ($member->fieldType != "array") { error("Cannot remove() for '{$member}', is not a array member"); } if ($key instanceof CHOQ_DB_Object) { $id = $key->getId(); if (!$id) { error("Could not use transient object '" . get_class($key) . "' for database usage, in member '{$member}'"); } $key = $id; } $existValue = $this->getByKey($property, $key); if ($existValue !== null) { unset($this->_realValues[$property][$key]); if (!$this->_realValues[$property]) { $this->_realValues[$property] = null; } $this->_changes[$property] = true; } return $this; }
/** * Lazy load array member - Fetch all array values for all objects that stored in the cache * * @param CHOQ_DB_Object $object * @param CHOQ_DB_TypeMember $member */ public function lazyLoadArrayMember(CHOQ_DB_Object $object, CHOQ_DB_TypeMember $member) { $db = $member->getDb ? $member->getDb : $this; $objects = CHOQ_DB_Object::getCachedObjects($db, $object->_getType()); $objects[$object->getId()] = $object; $ids = array(); if ($objects) { foreach ($objects as $o) { if (!isset($o->_loaded[$member->name]) && isset($o->_dbValues[$member->name])) { $ids[$o->getId()] = $o->getId(); } $o->_loaded[$member->name] = true; } } if ($ids) { $table = $db->quote($member->type->class . "_" . $member->name); $tmp = $db->fetchAsAssoc("SELECT * FROM {$table} WHERE " . $db->quote("o") . " IN " . $db->toDb($ids)); if ($member->fieldTypeArrayClass) { $arr = $db->getByIds(NULL, arrayMapProperty($tmp, "v")); foreach ($tmp as $row) { if (isset($arr[$row["v"]])) { $objects[$row["o"]]->add($member->name, $arr[$row["v"]], $arr[$row["v"]]->getId(), false); } } } else { foreach ($tmp as $row) { if (isset($ids[$row["o"]])) { $objects[$row["o"]]->add($member->name, $member->convertFromDbValue($row["v"]), $row["k"], false); } } } } }
/** * Delete */ public function delete() { parent::delete(); RDR_Cleanup::cleanupFeeds(); }
/** * On new user set the newest entry id for the newest check */ public function store() { if (!$this->getId()) { $this->setting("init.entry", db()->fetchOne("SELECT MAX(id) FROM RDR_Entry")); } parent::store(); }