/** * Reset share stats * * @param array $entities * * @return void */ public function resetStats(array $entities) { foreach ($entities as $entity) { $ids = $this->getService('repos:base.ownership')->getQuery()->ownable($entity)->disableChain()->fetchValues('owner.id'); $entity->set('sharedOwnerCount', count($ids)); $entity->set('sharedOwnerIds', AnDomainAttribute::getInstance('set')->setData($ids)); } }
/** * Create a person actor node from the user object * * * @param JUser $user * @return void */ public function createFromUser($user) { if (!$user->id) { return null; } $params = new JParameter($user->params); $person = $this->getService('repos://site/people.person')->getEntity()->setData(array('component' => 'com_people', 'name' => $user->name, 'userId' => $user->id, 'username' => $user->username, 'email' => $user->email, 'userType' => $user->usertype, 'registrationDate' => AnDomainAttribute::getInstance('date')->setDate($user->registerDate), 'lastVisitDate' => AnDomainAttribute::getInstance('date')->setDate($user->lastvisitDate), 'language' => $params->get('language'), 'timezone' => $params->get('timezone'), 'enabled' => !$user->block), AnDomain::ACCESS_PROTECTED); return $person; }
/** * Reset the all graph information for the actors. * * @param array $actors Array of actors */ public function resetStats($actors) { foreach ($actors as $actor) { if ($actor->isFollowable()) { $followerIds = $actor->followers->getQuery(true, true)->fetchValues('id'); $actor->set('followerCount', count($followerIds)); $actor->set('followerIds', AnDomainAttribute::getInstance('set')->setData($followerIds)); $blockedIds = $actor->blockeds->getQuery(true, true)->fetchValues('id'); $actor->set('blockedIds', AnDomainAttribute::getInstance('set')->setData($blockedIds)); $requesterIds = $actor->requesters->getQuery(true, true)->fetchValues('id'); $actor->set('followRequesterIds', AnDomainAttribute::getInstance('set')->setData($requesterIds)); } if ($actor->isLeadable()) { $leaderIds = $actor->leaders->getQuery(true, true)->fetchValues('id'); $actor->set('leaderCount', count($leaderIds)); $actor->set('leaderIds', AnDomainAttribute::getInstance('set')->setData($leaderIds)); $blockerIds = $actor->blockers->getQuery(true, true)->fetchValues('id'); $actor->set('blockerIds', AnDomainAttribute::getInstance('set')->setData($blockerIds)); $followerIds = $actor->followers->getQuery(true, true)->fetchValues('id'); $mutualIds = array_intersect($leaderIds, $followerIds); $actor->set('mutualIds', AnDomainAttribute::getInstance('set')->setData($mutualIds)); $actor->set('mutualCount', count($mutualIds)); } } }
/** * Removes an array of people or ids from the list of subscribers * * @param ComActorsDomainEntityActor|array $subscribers An array of people or ids * * @return void */ public function removeSubscribers($subscribers) { $subscribers = KConfig::unbox($subscribers); if (is($subscribers, 'AnDomainEntityAbstract')) { $subscribers = array($subscribers); } else { $subscribers = (array) $subscribers; } $ids = $this->subscriberIds->toArray(); foreach ($subscribers as $subscriber) { $id = is($subscriber, 'AnDomainEntityAbstract') ? $subscriber->id : $subscriber; unset($ids[$id]); } $this->set('subscriberIds', AnDomainAttribute::getInstance('set')->setData($ids)); //if there are no more subscriber then delete the notification if (empty($ids)) { $this->delete(); } return $this; }
/** * Reset stats * * @param array $actor An array of notifiable actors * * @return void */ public function resetStats($actors) { foreach ($actors as $actor) { $ids = $actor->notificationIds->toArray(); $ids = $this->getService('repos://site/notifications.notification')->getQuery()->id($ids)->fetchValues('id'); $actor->set('notificationIds', AnDomainAttribute::getInstance('set')->setData($ids)); $new_ids = array(); foreach ($actor->newNotificationIds as $id) { if (in_array($id, $ids)) { $new_ids[] = $id; } } $actor->set('newNotificationIds', AnDomainAttribute::getInstance('set')->setData($new_ids)); } }
/** * Reset vote stats. * * @param array $entities */ public function resetStats(array $entities) { foreach ($entities as $entity) { $ids = $this->getService('repos:base.voteup')->getQuery()->votee($entity)->disableChain()->fetchValues('voter.id'); $entity->set('voteUpCount', count($ids)); $entity->set('voterUpIds', AnDomainAttribute::getInstance('set')->setData($ids)); $ids = $this->getService('repos:base.votedown')->getQuery()->votee($entity)->disableChain()->fetchValues('voter.id'); $entity->set('voteDownCount', count($ids)); $entity->set('voterDownIds', AnDomainAttribute::getInstance('set')->setData($ids)); } }
/** * Reset subscriptions stats. * * @param array $entities */ public function resetStats(array $entities) { foreach ($entities as $entity) { $ids = $entity->subscriptions->getQuery()->disableChain()->fetchValues('subscriber.id'); $entity->set('subscriberCount', count($ids)); $entity->set('subscriberIds', AnDomainAttribute::getInstance('set')->setData($ids)); $entity->save(); } }
/** * sets the last person who changed the open status * * @param ComPeopleDomainEntityPerson object $changer * * @return null */ public function setLastChanger($changer) { $this->set('lastChanger', $changer); $this->set('openStatusChangeTime', AnDomainAttribute::getInstance('date')); }
/** * Materialize the database value into attribute values for an entity. * * @param array $data The raw data of the domain entity * @param AnDomainEntityAbstract $entity Domain entity being fetched * * @return string|int|float reutrn a scalar value */ public function materialize(array $data, $entity) { $key = $this->getColumn()->key(); $value = null; if ($this->isMaterializable($data)) { //only set the value type if it's not null if ($data[$key] !== null) { if ($this->isScalar()) { $value = $data[$key]; settype($value, $this->getType()); } else { $value = AnDomainAttribute::getInstance($this->getType()); $value->unserialize($data[$key]); } } } else { throw new AnDomainExceptionMapping($this->getName() . ' Mapping Failed'); } return $value; }
public function resetRead() { $this->set('newNotificationIds', AnDomainAttribute::getInstance('set'))->save(); }
/** * Reset vote stats * * @param array $entities * * @return void */ public function resetStats(array $entities) { foreach ($entities as $entity) { if ($entity->isAdministrable()) { $ids = $this->getService('repos:actors.administrator')->getQuery()->administrable($entity)->disableChain()->fetchValues('administrator.id'); $entity->set('administratorIds', AnDomainAttribute::getInstance('set')->setData($ids)); } elseif ($entity->isAdministrator()) { $ids = $this->getService('repos:actors.administrator')->getQuery()->administrator($entity)->disableChain()->fetchValues('administrable.id'); $entity->set('administratingIds', AnDomainAttribute::getInstance('set')->setData($ids)); } } }