Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
 /**
  * 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();
     }
 }
Exemplo n.º 3
0
 /**
  * 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")));
     }
 }
Exemplo n.º 4
0
	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;
 }
Exemplo n.º 6
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;
					}
				}
			}
  		}
Exemplo n.º 7
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;
                 }
             }
         }
     }
 }
Exemplo n.º 8
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}");
 }
Exemplo n.º 9
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;
}
Exemplo n.º 10
0
	/**
	 * 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
Exemplo n.º 11
0
 /**
 * Drop comments by object
 *
 * @param ContentDataObject
 * @return boolean
 */
 static function dropCommentsByObject(ContentDataObject $object) {
   return Comments::delete(array('`rel_object_id` = ?', $object->getObjectId()));
 } // dropCommentsByObject
Exemplo n.º 12
0
	static function getAddTimespanUrl(ContentDataObject $object) {
		return get_url('timeslot', 'add_timespan', array(
			'object_id' => $object->getId()
		));
	}
Exemplo n.º 13
0
 /**
  * Clear subscriptions by object
  *
  * @param ContentDataObject $object
  * @return boolean
  */
 static function clearByObject(ContentDataObject $object)
 {
     return ObjectSubscriptions::delete('`object_id` = ' . DB::escape($object->getId()));
 }
Exemplo n.º 14
0
 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);
             }
         }
     }
 }