/**
  * Removes the object from those members where the user can see the object(and its corresponding parents)
  * 
  */
 static function removeObjectFromMembers(ContentDataObject $object, Contact $contact, $context_members, $members_to_remove = null, $check_permissions = true)
 {
     if (is_null($members_to_remove)) {
         $member_ids = array_flat(DB::executeAll("SELECT om.member_id FROM " . TABLE_PREFIX . "object_members om\r\n  \t\t\t\t\t\tINNER JOIN " . TABLE_PREFIX . "members m ON m.id=om.member_id\r\n  \t\t\t\t\t\tINNER JOIN " . TABLE_PREFIX . "dimensions d On d.id=m.dimension_id \r\n  \t\t\t\t\t\tWHERE d.is_manageable=1 AND om.object_id = " . $object->getId()));
     } else {
         $member_ids = $members_to_remove;
     }
     $memebers_deleted_ids = array();
     foreach ($member_ids as $id) {
         $member = Members::findById($id);
         if (!$member instanceof Member) {
             continue;
         }
         if ($check_permissions) {
             //can write this object type in the member
             $can_write = $object->canAddToMember($contact, $member, $context_members);
         } else {
             $can_write = true;
         }
         if ($can_write) {
             $om = self::findById(array('object_id' => $object->getId(), 'member_id' => $id));
             if ($om instanceof ObjectMember) {
                 $om->delete();
                 $memebers_deleted_ids[] = $id;
             }
             $stop = false;
             while ($member->getParentMember() != null && !$stop) {
                 $member = $member->getParentMember();
                 $obj_member = ObjectMembers::findOne(array("conditions" => array("`object_id` = ? AND `member_id` = ? AND \r\n\t\t\t\t\t\t\t\t\t`is_optimization` = 1", $object->getId(), $member->getId())));
                 if (!is_null($obj_member)) {
                     $obj_member->delete();
                 } else {
                     $stop = true;
                 }
             }
         }
     }
     return $memebers_deleted_ids;
 }
예제 #2
0
		/**
		 * Removes the object from those members where the user can see the object(and its corresponding parents)
		 * 
		 */
  		static function removeObjectFromMembers(ContentDataObject $object, Contact $contact, $context_members, $members_to_remove = null){
  			
  			if (is_null($members_to_remove)) {
  				$member_ids = array_flat(DB::executeAll("SELECT member_id FROM ".TABLE_PREFIX."object_members WHERE object_id = " . $object->getId()));
  			} else {
  				$member_ids = $members_to_remove;
  			}
  			
  			foreach($member_ids as $id){
				
				$member = Members::findById($id);
				if (!$member instanceof Member) continue;
				
				//can write this object type in the member
				$can_write = $object->canAddToMember($contact, $member, $context_members);
				
				
				if ($can_write){
					$om = self::findById(array('object_id' => $object->getId(), 'member_id' => $id));
					if ($om instanceof ObjectMember) {
						$om->delete();
					}
					
					$stop = false;
					while ($member->getParentMember() != null && !$stop){
						$member = $member->getParentMember();
						$obj_member = ObjectMembers::findOne(array("conditions" => array("`object_id` = ? AND `member_id` = ? AND 
									`is_optimization` = 1", $object->getId(),$member->getId())));
						if (!is_null($obj_member)) {
							$obj_member->delete();
						}
						else $stop = true;
					}
				}
			}
  		}
예제 #3
0
 /**
  * Removes the object from those members where the user can see the object(and its corresponding parents)
  * 
  */
 static function removeObjectFromMembers(ContentDataObject $object, Contact $contact, $context_members)
 {
     $object_type_id = $object->getObjectTypeId();
     $member_ids = self::getMemberIdsbyObject($object->getId());
     foreach ($member_ids as $id) {
         $member = Members::findById($id);
         //can write this object type in the member
         $can_write = $object->canAddToMember($contact, $member, $context_members);
         if ($can_write) {
             $om = self::findById(array('object_id' => $object->getId(), 'member_id' => $id));
             $om->delete();
             $stop = false;
             while ($member->getParentMember() != null && !$stop) {
                 $member = $member->getParentMember();
                 $obj_member = ObjectMembers::findOne(array("conditions" => array("`object_id` = ? AND `member_id` = ? AND \n\t\t\t\t\t\t\t\t\t`is_optimization` = 1", $object->getId(), $member->getId())));
                 if (!is_null($obj_member)) {
                     $obj_member->delete();
                 } else {
                     $stop = true;
                 }
             }
         }
     }
 }
예제 #4
0
 static function clearByObjectAndUser(ContentDataObject $object, Contact $user, $include_subscribers = false)
 {
     if ($include_subscribers) {
         $usercond = '(`contact_id` = ' . DB::escape($user->getId()) . ' OR `contact_id` = 0)';
     } else {
         $usercond = '`contact_id` = ' . DB::escape($user->getId());
     }
     return ObjectReminders::delete('`object_id` = ' . DB::escape($object->getId()) . " AND {$usercond}");
 }
예제 #5
0
/**
 * Creates a button that shows an object picker to link the object given by $object with the one selected in
 * the it.
 *
 * @param ContentDataObject $object
 */
function render_link_to_object($object, $text=null, $reload=false){
	require_javascript("og/ObjectPicker.js");
	
	$id = $object->getId();
	if ($text == null) $text = lang('link object');
	$reload_param = $reload ? '&reload=1' : ''; 
	$result = '';
	$result .= '<a href="#" class="link-ico ico-add" onclick="og.ObjectPicker.show(function (data) {' .
			'if (data) {' .
				'var objects = \'\';' .
				'for (var i=0; i < data.length; i++) {' .
					'if (objects != \'\') objects += \',\';' .
					'objects += data[i].data.object_id;' .
				'}' .
				' og.openLink(\'' . get_url("object", "link_object") .
						'&object_id=' . $id . $reload_param . '&objects=\' + objects' . 
						($reload ? ',{callback: function(){og.redrawLinkedObjects('. $object->getId() .')}}' : '') . ');' .
			'}' .
		'},\'\',\'\','. $object->getId() .')" id="object_linker">';
	$result .= $text;
	$result .= '</a>';
	return $result;
}
예제 #6
0
	static function getAddTimespanUrl(ContentDataObject $object) {
		return get_url('timeslot', 'add_timespan', array(
			'object_id' => $object->getId()
		));
	}
 /**
  * Clear subscriptions by object
  *
  * @param ContentDataObject $object
  * @return boolean
  */
 static function clearByObject(ContentDataObject $object)
 {
     return ObjectSubscriptions::delete('`object_id` = ' . DB::escape($object->getId()));
 }