static function findRoot($class_name = '')
 {
     if (!$class_name) {
         $class_name = self::_getCallingClass();
     }
     return lmbActiveRecord::findOne($class_name, lmbSQLCriteria::equal('parent_id', 0));
 }
 function check($value)
 {
     $criteria = lmbSQLCriteria::equal($this->field_name, $value)->addAnd('parent_id = ' . ($this->parent_id ? $this->parent_id : $this->node->getParent()->getId()));
     if (!$this->node->isNew()) {
         $criteria->addAnd('id <> ' . $this->node->getId());
     }
     if (lmbActiveRecord::findOne(get_class($this->node), $criteria)) {
         $this->error($this->error_message);
     }
 }
 function check($value)
 {
     $criteria = lmbSQLCriteria::equal($this->field_name, $value);
     if (!$this->object->isNew()) {
         $criteria->addAnd(new lmbSQLFieldCriteria('id', $this->object->getId(), lmbSQLFieldCriteria::NOT_EQUAL));
     }
     $records = lmbActiveRecord::find($this->class, $criteria);
     if ($records->count()) {
         $this->error('Значение в поле {Field} уже занято');
     }
 }
示例#4
0
 static function findOneByIdentifier($identifier)
 {
     if ($block = lmbActiveRecord::findOne('lmbCmsTextBlock', lmbSQLCriteria::equal('identifier', $identifier))) {
         return $block;
     }
     if (!($default_content = lmbToolkit::instance()->getConf('text_blocks')->get($identifier))) {
         return null;
     }
     $block = new lmbCmsTextBlock();
     $block->import($default_content);
     $block->setIdentifier($identifier);
     return $block;
 }
示例#5
0
 /**
  * @param string $uri
  * @return lmbCmsDocument
  */
 static function findByUri($uri)
 {
     $identifiers = explode('/', rtrim($uri, '/'));
     $criteria = new lmbSQLCriteria('level = 0');
     $level = 0;
     foreach ($identifiers as $identifier) {
         $identifier_criteria = lmbSQLCriteria::equal('identifier', $identifier);
         $identifier_criteria->addAnd(lmbSQLCriteria::equal('level', $level));
         $criteria->addOr($identifier_criteria);
         $level++;
     }
     $documents = lmbActiveRecord::find('lmbCmsDocument', $criteria);
     $parent_id = 0;
     foreach ($identifiers as $identifier) {
         if (!($document = self::_getNodeByParentIdAndIdentifier($documents, $parent_id, $identifier))) {
             return false;
         }
         $parent_id = $document->getId();
     }
     return $document;
 }
 private function _getKeyCriteria($resolved_key, $column = 'key')
 {
     return lmbSQLCriteria::equal($column, $resolved_key);
 }
示例#7
0
 function testFetch_NestedAttachProperty_In_Join()
 {
     $course1 = $this->creator->createCourse();
     $course2 = $this->creator->createCourse();
     $alt_course1 = $this->creator->createCourse();
     $alt_course2 = $this->creator->createCourse();
     $lecture1 = $this->creator->createLecture($course1, $alt_course2);
     $lecture2 = $this->creator->createLecture($course2, $alt_course1);
     $lecture3 = $this->creator->createLecture($course1, $alt_course2);
     $lecture4 = $this->creator->createLecture($course1, $alt_course1);
     $lecture5 = $this->creator->createLecture($alt_course2);
     $lecture6 = $this->creator->createLecture($alt_course1);
     $lecture7 = $this->creator->createLecture($alt_course2);
     $lecture8 = $this->creator->createLecture($alt_course1);
     $this->conn->resetStats();
     $query = lmbARQuery::create('LectureForTest', array(), $this->conn);
     $query->where(lmbSQLCriteria::equal('course_id', $course1->getId()));
     $iterator = $query->eagerJoin('alt_course', array('attach' => 'lectures'))->fetch();
     $arr = $iterator->getArray();
     $this->assertEqual($this->conn->countQueries(), 2);
     //make sure we really eager fetching
     $this->db->delete('lecture_for_test');
     $this->db->delete('course_for_test');
     $this->conn->resetStats();
     $this->assertIsA($arr[0], 'LectureForTest');
     $this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle());
     $this->assertEqual($arr[0]->getAltCourse()->getTitle(), $alt_course2->getTitle());
     $alt_course_lectures = $arr[0]->getAltCourse()->getLectures();
     $this->assertEqual($alt_course_lectures[0]->getId(), $lecture5->getId());
     $this->assertEqual($alt_course_lectures[1]->getId(), $lecture7->getId());
     $this->assertEqual($arr[1]->getId(), $lecture3->getId());
     $this->assertEqual($arr[1]->getAltCourse()->getTitle(), $alt_course2->getTitle());
     $alt_course_lectures = $arr[1]->getAltCourse()->getLectures();
     $this->assertEqual($alt_course_lectures[0]->getId(), $lecture5->getId());
     $this->assertEqual($alt_course_lectures[1]->getId(), $lecture7->getId());
     $this->assertEqual($arr[2]->getId(), $lecture4->getId());
     $this->assertEqual($arr[2]->getAltCourse()->getTitle(), $alt_course1->getTitle());
     $alt_course_lectures = $arr[2]->getAltCourse()->getLectures();
     $this->assertEqual($alt_course_lectures[0]->getId(), $lecture6->getId());
     $this->assertEqual($alt_course_lectures[1]->getId(), $lecture8->getId());
     $this->assertEqual($this->conn->countQueries(), 0);
 }
 function testFindWithKind()
 {
     $valid_object1 = new BarFooOneTableTestObject();
     $valid_object1->setTitle('title1');
     $valid_object1->save();
     $valid_object2 = new BarFooOneTableTestObject();
     $valid_object2->setTitle('title2');
     $valid_object2->save();
     $wrong_class_object = new FooOneTableTestObject();
     $wrong_class_object->setTitle('title1');
     $wrong_class_object->save();
     $wrong_title_object = new FooOneTableTestObject();
     $wrong_title_object->setTitle('wrong_title');
     $wrong_title_object->save();
     $criteria = new lmbSQLCriteria();
     $criteria->add(lmbSQLCriteria::equal('title', 'title1'));
     $criteria->addOr(lmbSQLCriteria::equal('title', 'title2'));
     $records = lmbActiveRecord::find('BarFooOneTableTestObject', $criteria)->sort(array('id'))->getArray();
     $this->assertEqual(count($records), 2);
     $this->assertEqual($records[0]->title, $valid_object1->title);
     $this->assertEqual($records[1]->title, $valid_object2->title);
 }
 function remove($object)
 {
     $table = new lmbTableGateway($this->relation_info['table'], $this->conn);
     $criteria = new lmbSQLCriteria();
     $criteria->addAnd(lmbSQLCriteria::equal($this->relation_info['field'], $this->owner->getId()));
     $criteria->addAnd(lmbSQLCriteria::equal($this->relation_info['foreign_field'], $object->getId()));
     $table->delete($criteria);
     $this->reset();
 }
示例#10
0
 function testEqual()
 {
     $criteria = lmbSQLCriteria::equal('id', 1);
     $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', 1, lmbSQLFieldCriteria::EQUAL));
 }