public function prepareQueryBeforeCount(xPDOQuery $c) { $c = parent::prepareQueryBeforeCount($c); $alias = $c->getAlias(); # if($this->getProperty('parent_joining_type') == 'inner'){ # $c->innerJoin('modResource', "Parent"); # } # else{ # $c->leftJoin('modResource', "Parent"); # } # $c->innerJoin('modUser', 'Author', "Author.id = {$alias}.createdby"); # $where = array("parent" => 86855, "OR:rss:=" => 1); # # $c->where($where); # print '<pre>'; # print_r($this->properties); # print '</pre>'; # $c->select(array( # "{$alias}.id", # "{$alias}.pagetitle", # )); # $c->prepare(); # print $c->toSQL(); # exit; return $c; }
public function setSelection(xPDOQuery $q) { $q = parent::setSelection($q); $q->innerJoin('modUser', 'CreatedBy'); $q->innerJoin('modUserProfile', 'CreatedByProfile', "CreatedBy.id = CreatedByProfile.internalKey"); # $q->innerJoin('SocietyTopicAttributes', 'Attributes'); # $q->innerJoin('SocietyBlogTopic', 'bt', "bt.topicid = {$this->classKey}.id"); # $q->innerJoin('modResource', 'blog', "blog.id = bt.blogid"); /* Получаем данные диалоговой ветви */ $q->leftJoin('SocietyThread', 'thread', "thread.target_class='modResource' AND thread.target_id={$this->classKey}.id"); $q->select(array("CreatedBy.username as author", "CreatedByProfile.fullname as author_fullname", "CreatedByProfile.photo as author_avatar", "CreatedBy.username as author_username", "thread.id as thread_id", "thread.positive_votes", "thread.negative_votes", "thread.comments_count")); /* Проверяем, есть ли голос пользователя здесь */ # $c->leftJoin('SocietyVote', 'vote', "vote.target_class='modResource' AND vote.target_id={$this->classKey}.id AND vote.user_id = ". $this->modx->user->id); # $c->select(array( # "vote.id as vote_id", # "vote.vote_direction", # "vote.vote_value", # )); /*$s = $q->prepare(); $s->execute(); print_r($s->errorInfo()); exit;*/ return $q; }
public function prepareQueryBeforeCount(xPDOQuery $c) { $c = parent::prepareQueryBeforeCount($c); $alias = $c->getAlias(); $c->innerJoin('view.modResourceVisitView', "visits", "visits.resource_id = {$alias}.id"); $where = array(); if ($where) { $c->where($where); } return $c; }
public function afterIteration(array $list) { $list = parent::afterIteration($list); // Получаем всех пользователей, кому отправлять рассылку $users_query = $this->modx->newQuery('modUser'); $alias = $users_query->getAlias(); $users_query->distinct(); $users_query->innerJoin('modUserProfile', 'Profile'); $users_query->leftJoin('SocietyNoticeUser', 'Notices'); $users_query->leftJoin('SocietyNoticeType', 'NoticeType', "NoticeType.target = 'modResource' AND NoticeType.id = Notices.notice_id"); $users_query->innerJoin('modUserGroupMember', 'UserGroupMembers'); $users_query->select(array("{$alias}.*", "Profile.email")); $users_query->where(array("active" => 1, "Profile.blocked" => 0, "NoticeType.id" => 3)); # $users_query->where(array( # "UserGroupMembers.user_group" => '1', # # "id" => 422, # )); $users_query->where(array("Profile.blockeduntil" => 0, "OR:Profile.blockeduntil:<" => time())); # $users_query->prepare(); # print $users_query->toSQL(); $date = date('d-m-Y'); $site_name = $this->modx->getOption('site_name'); $this->modx->smarty->assign('articles', $list); $auth_link_salt = $this->modx->getOption('modsociety.auth_link_salt'); foreach ($this->modx->getIterator('modUser', $users_query) as $user) { # print_r($user->toArray()); $this->modx->smarty->assign('user', $user); $message = $this->modx->smarty->fetch('messages/society/articles/mailling/letter.tpl'); # print $message; # exit; $subject = "Рассылка {$site_name} {$date}"; if ($emailmessage = $this->modx->newObject('SocietyEmailMessage', array("user_id" => $user->id, "subject" => $subject, "message" => $message))) { # print_r($emailmessage->toArray()); # $manager = $modx->getManager(); // $manager->createObjectContainer('SocietyEmailMessage'); $emailmessage->save(); } } # print_r($users_query->stmt->errorInfo()); # print $message; return $list; }
public function initialize() { $this->setProperties(array("main_news_only" => true)); return parent::initialize(); }
public function prepareRow(xPDOObject $object) { /* Определяем тип объекта */ if ($object instanceof ShopmodxResourceProductModel) { $object->set('object_type', 'model'); } else { if ($object instanceof ShopmodxResourceProduct) { $object->set('object_type', 'product'); } else { $object->set('object_type', 'document'); } } return parent::prepareRow($object); }