Example #1
0
 /**
  * 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();
 }
Example #2
0
 /**
  * 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;
                 }
             }
         }
     }
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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);
                 }
             }
         }
     }
 }
Example #5
0
 /**
  * Delete
  */
 public function delete()
 {
     parent::delete();
     RDR_Cleanup::cleanupFeeds();
 }
Example #6
0
 /**
  * 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();
 }