/**
  * This function will return paginated result. Result is an array where first element is 
  * array of returned object and second populated pagination object that can be used for 
  * obtaining and rendering pagination data using various helpers.
  * 
  * Items and pagination array vars are indexed with 0 for items and 1 for pagination
  * because you can't use associative indexing with list() construct
  *
  * @access public
  * @param array $arguments Query argumens (@see find()) Limit and offset are ignored!
  * @param integer $items_per_page Number of items per page
  * @param integer $current_page Current page number
  * @return array
  */
 function paginate($arguments = null, $items_per_page = 10, $current_page = 1)
 {
     if (isset($this) && instance_of($this, 'MemberPropertyMembers')) {
         return parent::paginate($arguments, $items_per_page, $current_page);
     } else {
         return MemberPropertyMembers::instance()->paginate($arguments, $items_per_page, $current_page);
     }
     // if
 }
 /**
 * Return manager instance
 *
 * @access protected
 * @param void
 * @return MemberPropertyMembers 
 */
 function manager() {
   if(!($this->manager instanceof MemberPropertyMembers)) $this->manager = MemberPropertyMembers::instance();
   return $this->manager;
 } // manager
 /**
  * Return manager instance
  *
  * @access protected
  * @param void
  * @return MemberPropertyMembers 
  */
 function manager()
 {
     if (!$this->manager instanceof MemberPropertyMembers) {
         $this->manager = MemberPropertyMembers::instance();
     }
     return $this->manager;
 }
function core_dim_remove_contacts_member_associations(Member $member) {
	// one way
	$associations = DimensionMemberAssociations::getAssociatations ( $member->getDimensionId(), $member->getObjectTypeId() );
	foreach ( $associations as $a ) {
		$condition = "association_id = ".$a->getId()." AND member_id = ".$member->getId()." AND property_member_id IN 
			(SELECT m.id FROM ".TABLE_PREFIX."members m WHERE m.object_type_id=".$a->getAssociatedObjectType()." AND m.dimension_id=".$a->getAssociatedDimensionMemberAssociationId().")";
		MemberPropertyMembers::instance()->delete($condition);
	}
	
	// reverse way
	$associations = DimensionMemberAssociations::findAll(array("conditions" => array("`associated_dimension_id` = ? AND `associated_object_type_id` = ?", $member->getDimensionId(), $member->getObjectTypeId())));
	foreach ( $associations as $a ) {
		$condition = "association_id = ".$a->getId()." AND property_member_id = ".$member->getId()." AND member_id IN 
			(SELECT m.id FROM ".TABLE_PREFIX."members m WHERE m.object_type_id=".$a->getObjectTypeId()." AND m.dimension_id=".$a->getDimensionId().")";
		MemberPropertyMembers::instance()->delete($condition);
	}
}
Exemple #5
0
function associate_member_to_status_member($project_member, $old_project_status, $status_member_id, $status_dimension, $status_ot = null, $remove_prev_associations = true)
{
    if ($status_dimension instanceof Dimension && in_array($status_dimension->getId(), config_option('enabled_dimensions'))) {
        // asociate project objects to the new project_status member
        if ($old_project_status != $status_member_id) {
            $object_members = ObjectMembers::instance()->findAll(array('conditions' => "member_id = " . $project_member->getId() . " AND is_optimization=0"));
            // remove objects from old project_type member
            if ($old_project_status > 0) {
                foreach ($object_members as $om) {
                    $obj = Objects::findObject($om->getObjectId());
                    if ($obj instanceof ContentDataObject) {
                        ObjectMembers::removeObjectFromMembers($obj, logged_user(), null, array($old_project_status));
                    }
                }
            }
            // add objects to new project_type member
            if (is_numeric($status_member_id) && $status_member_id > 0) {
                $member_to_add = Members::findById($status_member_id);
                foreach ($object_members as $om) {
                    ObjectMembers::addObjectToMembers($om->getObjectId(), array($member_to_add));
                }
                if ($member_to_add instanceof Member && $member_to_add->getObjectId() > 0) {
                    $rel_obj = Objects::findObject($member_to_add->getObjectId());
                    if ($rel_obj instanceof ContentDataObject) {
                        ObjectMembers::addObjectToMembers($rel_obj->getId(), array($project_member));
                        $rel_obj->addToSharingTable();
                        $null = null;
                        Hook::fire("after_auto_classifying_associated_object_of_member", array('obj' => $rel_obj, 'mem' => $project_member), $null);
                    }
                }
            }
        }
        $member_dimension = $project_member->getDimension();
        $a = DimensionMemberAssociations::instance()->findOne(array('conditions' => array('dimension_id=? AND object_type_id=? AND associated_dimension_id=?' . ($status_ot instanceof ObjectType ? ' AND associated_object_type_id=' . $status_ot->getId() : ''), $member_dimension->getId(), $project_member->getObjectTypeId(), $status_dimension->getId())));
        // create relation between members and remove old relations
        if ($a instanceof DimensionMemberAssociation) {
            if (is_numeric($status_member_id) && $status_member_id > 0) {
                $mpm = MemberPropertyMembers::findOne(array('id' => true, 'conditions' => array('association_id = ? AND member_id = ? AND property_member_id = ?', $a->getId(), $project_member->getId(), $status_member_id)));
                if (is_null($mpm)) {
                    $sql = "INSERT INTO " . TABLE_PREFIX . "member_property_members (association_id, member_id, property_member_id, is_active, created_on, created_by_id)\r\n\t\t\t\t\t\tVALUES (" . $a->getId() . "," . $project_member->getId() . "," . $status_member_id . ", 1, NOW()," . logged_user()->getId() . ");";
                    DB::executeAll($sql);
                }
            }
            if ($remove_prev_associations) {
                MemberPropertyMembers::instance()->delete('association_id = ' . $a->getId() . ' AND member_id = ' . $project_member->getId() . " AND property_member_id <> '{$status_member_id}'");
            }
        }
        $a = DimensionMemberAssociations::instance()->findOne(array('conditions' => array('associated_dimension_id=? AND associated_object_type_id=? AND dimension_id=?' . ($status_ot instanceof ObjectType ? ' AND object_type_id=' . $status_ot->getId() : ''), $member_dimension->getId(), $project_member->getObjectTypeId(), $status_dimension->getId())));
        // create relation between members and remove old relations
        if ($a instanceof DimensionMemberAssociation) {
            if (is_numeric($status_member_id) && $status_member_id > 0) {
                $mpm = MemberPropertyMembers::findOne(array('id' => true, 'conditions' => array('association_id = ? AND member_id = ? AND property_member_id = ?', $a->getId(), $project_member->getId(), $status_member_id)));
                if (is_null($mpm)) {
                    $sql = "INSERT INTO " . TABLE_PREFIX . "member_property_members (association_id, member_id, property_member_id, is_active, created_on, created_by_id)\r\n\t\t\t\t\t\tVALUES (" . $a->getId() . "," . $status_member_id . "," . $project_member->getId() . ", 1, NOW()," . logged_user()->getId() . ");";
                    DB::executeAll($sql);
                }
            }
            if ($remove_prev_associations) {
                MemberPropertyMembers::instance()->delete('association_id = ' . $a->getId() . ' AND property_member_id = ' . $project_member->getId() . " AND member_id <> '{$status_member_id}'");
            }
        }
    }
}