/** * 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; }
/** * 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; } } } }
/** * 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; } } } } }
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}"); }
/** * 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; }
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())); }