public function init() { $metadata = Conversation::getMetadata(); $observedModelClassNames = $metadata['Conversation']['conversationItemsModelClassNames']; if ($observedModelClassNames == null) { return; } foreach ($observedModelClassNames as $modelClassName) { $modelClassName::model()->attachEventHandler('onAfterDelete', array($this, 'deleteConversationItems')); } }
/** * Runs through relations and makes sure the user can access at least one relation. If at least one is * accessible, true is returned. */ public function canUserPerformAction() { $metadata = Conversation::getMetadata(); foreach ($metadata['Conversation']['conversationItemsModelClassNames'] as $modelClassName) { if (is_subclass_of($modelClassName, 'Item') && $modelClassName::getModuleClassName() != null) { if (RightsUtil::canUserAccessModule($modelClassName::getModuleClassName(), $this->user)) { } return true; } } return false; }
/** * Override to handle the special scenario of relations for a conversation. Since relations are done in the * ConversationItems, the relation information needs to handled in a specific way. * @see ZurmoModuleController->resolveNewModelByRelationInformation */ protected function resolveNewModelByRelationInformation($model, $relationModelClassName, $relationModelId, $relationModuleId) { assert('$model instanceof Conversation'); assert('is_string($relationModelClassName) || null'); assert('is_int($relationModelId)'); assert('is_string($relationModuleId)'); $metadata = Conversation::getMetadata(); if (in_array($relationModelClassName, $metadata['Conversation']['conversationItemsModelClassNames'])) { $model->conversationItems->add($relationModelClassName::getById((int) $relationModelId)); } else { throw new NotSupportedException(); } return $model; }
protected static function getRelatedItemsModelClassNames() { $metadata = Conversation::getMetadata(); return $metadata['Conversation']['conversationItemsModelClassNames']; }
public function __construct($relationModel) { $metadata = Conversation::getMetadata(); assert('in_array(get_class($relationModel), $metadata["Conversation"]["conversationItemsModelClassNames"])'); parent::__construct($relationModel); }