function add_subscribers(ContentDataObject $object) { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $log_info = ""; $subscribers = array_var($_POST, 'subscribers'); $object->clearSubscriptions(); if (is_array($subscribers)) { $user_ids = array(); foreach ($subscribers as $key => $checked) { $user_id = substr($key, 5); if ($checked == "checked") { $user = Contacts::findById($user_id); if ($user instanceof Contact) { $object->subscribeUser($user); $log_info .= ($log_info == "" ? "" : ",") . $user->getId(); $user_ids[] = $user_id; } } } Hook::fire('after_add_subscribers', array('object' => $object, 'user_ids' => $user_ids), $null); if ($log_info != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_SUBSCRIBE, false, true, true, $log_info); } } }
/** * Drop timeslots by object * * @param ContentDataObject * @return boolean */ static function dropTimeslotsByObject(ContentDataObject $object) { $timeslots = self::findAll(array('conditions' => array('`rel_object_id` = ?', $object->getObjectId()))); foreach ($timeslots as $timeslot) { $timeslot->delete(); } }
/** * Returns true if the object blongs to the texmplate context ($memberIds) * @author Ignacio Vazquez - elpepe.uy@gmail.com * @param ContentDataObject $object * @param array $memberIds */ static function validateObjectContext($object, $memberIds) { $valid = true; // Dimensiones requeridas para el tipo de objecto $dimensions = Dimensions::getAllowedDimensions(self::instance()->getObjectTypeId()); $requiredDimensions = array(); foreach ($dimensions as $dim) { if ($dim['is_required']) { $requiredDimensions[$dim['dimension_id']] = $dim; // Performance, dim id in the array key ! ! ! } } // Miembros del Objeto $objMembers = $object->getMemberIds(); // P/cada miembro foreach ($objMembers as $mid) { $member = Members::instance()->findById($mid); if ($member instanceof Member) { /* @var $member Member */ $did = $member->getDimensionId(); // Si la dimension del miembro esta en la requeridas if ($requiredDimensions[$did]) { if (!in_array($mid, $memberIds)) { $valid = false; } } } } if (!$valid) { throw new DAOValidationError($this, array(lang("template members do not match object members"))); } }
function addToSharingTable() { parent::addToSharingTable(); // Default processing $oid = $this->getId() ; if ( $member = $this->getSelfMember() ) { $mid = $member->getId(); $sql = " SELECT distinct(permission_group_id) as gid FROM ".TABLE_PREFIX."contact_member_permissions WHERE member_id = $mid "; $rows = DB::executeAll($sql); if (is_array($rows)) { foreach ($rows as $row ) { $values = array(); if ($gid = array_var($row, 'gid')) { $values[] = "($oid, $gid)"; } if (count($values) > 0) { $values_str = implode(",", $values); DB::execute("INSERT INTO ".TABLE_PREFIX."sharing_table (object_id, group_id) VALUES $values_str ON DUPLICATE KEY UPDATE object_id=object_id"); } } } } }
/** * 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; }
/** * Return add comment URL for specific object * * @param ContentDataObject $object * @return string */ static function getAddUrl(ContentDataObject $object) { return get_url('comment', 'add', array('object_id' => $object->getObjectId())); } // getAddUrl
/** * Drop comments by object * * @param ContentDataObject * @return boolean */ static function dropCommentsByObject(ContentDataObject $object) { return Comments::delete(array('`rel_object_id` = ?', $object->getObjectId())); } // dropCommentsByObject
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())); }
function add_subscribers(ContentDataObject $object, $subscribers = null, $check_permissions = true) { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $log_info = ""; $log_info_unsubscribe = ""; if ($subscribers == null) { $subscribers = array_var($_POST, 'subscribers'); } $subscribers_ids = array(); if (is_array($subscribers)) { $user_ids = array(); $subscribers_to_remove = array(); //add new subscribers foreach ($subscribers as $key => $checked) { $user_id = substr($key, 5); $subscribers_ids[] = $user_id; if ($checked == "1" && !in_array($user_id, $object->getSubscriberIds())) { $user = Contacts::findById($user_id); if ($user instanceof Contact) { $object->subscribeUser($user); $log_info .= ($log_info == "" ? "" : ",") . $user->getId(); $user_ids[] = $user_id; } } else { if ((!$checked || $checked == '0') && in_array($user_id, $object->getSubscriberIds())) { $subscribers_to_remove[] = $user_id; } } } //remove subscribers //$subscribers_to_remove = array_diff($object->getSubscriberIds(), $subscribers_ids); foreach ($subscribers_to_remove as $subs_remove) { $user = Contacts::findById($subs_remove); if ($user instanceof Contact) { $object->unsubscribeUser($user); $log_info_unsubscribe .= ($log_info_unsubscribe == "" ? "" : ",") . $user->getId(); } } Hook::fire('after_add_subscribers', array('object' => $object, 'user_ids' => $user_ids), $null); if ($log_info != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_SUBSCRIBE, false, true, true, $log_info); } if ($log_info_unsubscribe != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_UNSUBSCRIBE, false, true, true, $log_info_unsubscribe); } } else { $subscribers_to_remove = $object->getSubscriberIds(); foreach ($subscribers_to_remove as $user_id_remove) { $log_info_unsubscribe .= ($log_info_unsubscribe == "" ? "" : ",") . $user_id_remove; } $object->clearSubscriptions(); if ($log_info_unsubscribe != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_UNSUBSCRIBE, false, true, true, $log_info_unsubscribe); } } if ($check_permissions) { // remove subscribers without permissions $subscribed_users = $object->getSubscribers(); foreach ($subscribed_users as $user) { if (!$object->canView($user)) { $object->unsubscribeUser($user); } } } }