コード例 #1
0
ファイル: sharable.php プロジェクト: walteraries/anahita
 /**
  * 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));
     }
 }
コード例 #2
0
ファイル: person.php プロジェクト: walteraries/anahita
 /**
  * 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;
 }
コード例 #3
0
ファイル: actor.php プロジェクト: NicholasJohn16/anahita
 /**
  * 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));
         }
     }
 }
コード例 #4
0
ファイル: notification.php プロジェクト: walteraries/anahita
 /**
  * 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;
 }
コード例 #5
0
ファイル: notifiable.php プロジェクト: walteraries/anahita
 /**
  * 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));
     }
 }
コード例 #6
0
ファイル: votable.php プロジェクト: stonyyi/anahita
 /**
  * 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));
     }
 }
コード例 #7
0
 /**
  * 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();
     }
 }
コード例 #8
0
ファイル: todo.php プロジェクト: walteraries/anahita
 /**
  * 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'));
 }
コード例 #9
0
ファイル: property.php プロジェクト: stonyyi/anahita
 /**
  * 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;
 }
コード例 #10
0
ファイル: newable.php プロジェクト: NicholasJohn16/forums
 public function resetRead()
 {
     $this->set('newNotificationIds', AnDomainAttribute::getInstance('set'))->save();
 }
コード例 #11
0
ファイル: administrable.php プロジェクト: walteraries/anahita
 /**
  * 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));
         }
     }
 }