/** * select resource accessible for customers using * records (user_id, resource_id, resource_type, login, email) * @return Am_Query */ function getResourcesForMembers($types = null) { if ($types && !is_array($types)) { $types = (array) $types; } $qfree = new Am_Query($this, 'rfree'); $qfree->crossJoin('?_user', 'u')->clearFields()->addField('u.user_id')->addField('rfree.resource_id')->addField('rfree.resource_type')->addField('u.login')->addField('u.email')->addWhere("rfree.fn = 'free'"); $q = $this->_getBaseQuery(); $q->clearFields(); $q->addField('DISTINCT c.user_id')->addField('r.resource_id')->addField('r.resource_type')->addField('u.login')->addField('u.email')->leftJoin('?_user', 'u', 'u.user_id=c.user_id')->addOrder('user_id')->addWhere("r.fn <> 'free'")->addUnion($qfree); if ($types) { $q->addWhere('r.resource_type IN (?a)', $types); } return $q; }
/** * select resource accessible for customers using * records (user_id, resource_id, resource_type, login, email) * @return Am_Query */ function getResourcesForMembers($types = null, $condition = "1=1") { if ($types && !is_array($types)) { $types = (array) $types; } $qfree = new Am_Query($this, 'rfree'); $qfree->crossJoin('?_user', 'u')->clearFields()->addField('u.user_id')->addField('rfree.resource_id')->addField('rfree.resource_type')->addField('u.login')->addField('u.email')->addField("rfree.fn", 'fn')->addField("rfree.id", 'fn_id')->groupBy('user_id, resource_id, resource_type', 'u')->addWhere("rfree.fn IN ('free', 'free_without_login')")->addWhere("(\n (rfree.start_days IS NULL AND rfree.stop_days IS NULL) \n OR\n (CEIL((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(u.added))/86400) BETWEEN IFNULL(rfree.start_days,0) AND IFNULL(rfree.stop_days, 90000)) \n OR\n (CEIL((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(u.added))/86400) >= IFNULL(rfree.start_days,0) AND rfree.stop_days = -1) \n )"); if ($types) { $qfree->addWhere('rfree.resource_type IN (?a) AND ' . $condition, $types); } $q = $this->_getBaseQuery(); $q->clearFields(); $q->clearOrder(); $q->addField('DISTINCT c.user_id')->addField('r.resource_id')->addField('r.resource_type')->addField('u.login')->addField('u.email')->addField("r.fn", 'fn')->addField("r.id", 'fn_id')->leftJoin('?_user', 'u', 'u.user_id=c.user_id')->addOrder('user_id')->addOrderRaw("(SELECT _sort_order\n FROM ( SELECT sort_order as _sort_order, \n resource_type as _resource_type, \n resource_id as _resource_id\n FROM ?_resource_access_sort ras) AS _ras\n WHERE _resource_id=resource_id AND _resource_type=resource_type LIMIT 1),\n resource_id, resource_type")->groupBy('user_id, resource_id, resource_type', 'c')->addWhere("r.fn NOT IN ('free', 'free_without_login')")->addUnion($qfree); if ($types) { $q->addWhere('r.resource_type IN (?a) AND ' . $condition, $types); } return $q; }