public function favorite()
 {
     header('Content-Type: application/json');
     $u = new User();
     $data = $this->post();
     $pageID = (int) $this->get('id');
     $p = \Page::getByID($pageID);
     if ($u->getUserID() && !$p->isError() && $p->isSystemPage() == false) {
         //If user favorited remove entry else add entry
         $db = Database::get();
         $res = $db->GetRow("SELECT mpRelationID as rel FROM MultilingualPageRelations WHERE cID=?", array($pageID));
         $relation = $res['rel'];
         // var_dump($relation);
         // $res = $db->GetAll("SELECT cID FROM MultilingualPageRelations WHERE mpRelationID=?",array($relation));
         // var_dump($res);
         // if($res['rel'])
         // $res = $db->GetRow("SELECT Count(fav.cID) as num FROM MultilingualPageRelations mppr LEFT JOIN UserPageFavorites fav ON mppr.cID = fav.cID where uID = ? and mpRelationID = ?",array((int)$u->getUserID(),$rel));
         $res = $db->GetRow("SELECT Count(cID) as num FROM UserPageFavorites WHERE uID=? and cID in (SELECT cID FROM MultilingualPageRelations WHERE mpRelationID=?)", array((int) $u->getUserID(), $relation));
         // var_dump($res);
         if ($res['num'] > 0) {
             //Favorite Product
             $db->Execute('DELETE FROM UserPageFavorites WHERE cID in (SELECT cID FROM MultilingualPageRelations WHERE mpRelationID=?) and uID=?', array($relation, (int) $u->getUserID()));
             echo json_encode(array('status' => 'unfavorited'));
         } else {
             //Unfavorite Product
             $db->Execute('INSERT INTO UserPageFavorites(cID,uID) VALUES(?,?)', array($pageID, (int) $u->getUserID()));
             echo json_encode(array('status' => 'favorited'));
         }
         exit;
     } else {
         echo json_encode(array('status' => 'not_logged'));
     }
 }
Beispiel #2
0
 /** Return an User instance given its id (or null if it's not found)
  * @param int $uID The id of the user
  * @param boolean $login = false Set to true to make the user the current one
  * @param boolean $cacheItemsOnLogin = false Set to true to cache some items when $login is true
  * @return User|null
  */
 public static function getByUserID($uID, $login = false, $cacheItemsOnLogin = true)
 {
     $db = Loader::db();
     $v = array($uID);
     $q = "SELECT uID, uName, uIsActive, uLastOnline, uTimezone, uDefaultLanguage, uLastPasswordChange FROM Users WHERE uID = ? LIMIT 1";
     $r = $db->query($q, $v);
     $row = $r ? $r->FetchRow() : null;
     $nu = null;
     if ($row) {
         $nu = new User();
         $nu->uID = $row['uID'];
         $nu->uName = $row['uName'];
         $nu->uIsActive = $row['uIsActive'];
         $nu->uDefaultLanguage = $row['uDefaultLanguage'];
         $nu->uLastLogin = $row['uLastLogin'];
         $nu->uTimezone = $row['uTimezone'];
         $nu->uGroups = $nu->_getUserGroups(true);
         $nu->superUser = $nu->getUserID() == USER_SUPER_ID;
         $nu->uLastPasswordChange = $row['uLastPasswordChange'];
         if ($login) {
             $nu->persist($cacheItemsOnLogin);
             $nu->recordLogin();
         }
     }
     return $nu;
 }
Beispiel #3
0
 public function submit()
 {
     if ($this->validateAction()) {
         $comments = $this->request->request('comments');
         $comments = is_string($comments) ? trim($comments) : '';
         if ($comments === '' && $this->app->make('config')->get('concrete.misc.require_version_comments')) {
             return Response::create(t('Please specify the version comments'), 400);
         }
         $c = $this->page;
         $u = new User();
         $v = CollectionVersion::get($c, "RECENT");
         $v->setComment($_REQUEST['comments']);
         $pr = new PageEditResponse();
         if (($this->request->request->get('action') == 'publish' || $this->request->request->get('action') == 'schedule') && $this->permissions->canApprovePageVersions()) {
             $e = $this->checkForPublishing();
             $pr->setError($e);
             if (!$e->has()) {
                 $pkr = new ApprovePagePageWorkflowRequest();
                 $pkr->setRequestedPage($c);
                 $pkr->setRequestedVersionID($v->getVersionID());
                 $pkr->setRequesterUserID($u->getUserID());
                 $u->unloadCollectionEdit($c);
                 if ($this->request->request->get('action') == 'schedule') {
                     $dateTime = new DateTime();
                     $publishDateTime = $dateTime->translate('check-in-scheduler');
                     $pkr->scheduleVersion($publishDateTime);
                 }
                 if ($c->isPageDraft()) {
                     $pagetype = $c->getPageTypeObject();
                     $pagetype->publish($c, $pkr);
                 } else {
                     $pkr->trigger();
                 }
             }
         } else {
             if ($this->request->request->get('action') == 'discard') {
                 if ($c->isPageDraft() && $this->permissions->canDeletePage()) {
                     $u = new User();
                     $cID = $u->getPreviousFrontendPageID();
                     $this->page->delete();
                     $pr->setRedirectURL(DIR_REL . '/' . DISPATCHER_FILENAME . '?cID=' . $cID);
                     $pr->outputJSON();
                 } else {
                     if ($v->canDiscard()) {
                         $v->discard();
                     }
                 }
             } else {
                 $v->removeNewStatus();
             }
         }
         $nc = Page::getByID($c->getCollectionID(), $v->getVersionID());
         $u->unloadCollectionEdit();
         $pr->setRedirectURL(Loader::helper('navigation')->getLinkToCollection($nc, true));
         $pr->outputJSON();
     }
 }
 public function completeAuthentication(User $u)
 {
     $ui = \UserInfo::getByID($u->getUserID());
     if (!$ui->hasAvatar()) {
         try {
             $image = \Image::open($this->getExtractor()->getImageURL());
             $ui->updateUserAvatar($image);
         } catch (\Imagine\Exception\InvalidArgumentException $e) {
             \Log::addNotice("Unable to fetch user images in Google Authentication Type, is allow_url_fopen disabled?");
         } catch (\Exception $e) {
         }
     }
     return parent::completeAuthentication($u);
 }
 public function buildHash(User $u, $test = 1)
 {
     if ($test > 10) {
         // This should only ever happen if by some stroke of divine intervention,
         // we end up pulling 10 hashes that already exist. the chances of this are very very low.
         throw new \Exception(t('There was a database error, try again.'));
     }
     $db = Database::connection();
     $validThrough = strtotime('+2 weeks');
     $token = $this->genString();
     try {
         $db->executeQuery('INSERT INTO authTypeConcreteCookieMap (token, uID, validThrough) VALUES (?,?,?)', array($token, $u->getUserID(), $validThrough));
     } catch (\Exception $e) {
         // HOLY CRAP.. SERIOUSLY?
         $this->buildHash($u, ++$test);
     }
     return $token;
 }
Beispiel #6
0
 /** Return an User instance given its id (or null if it's not found)
  * @param int $uID The id of the user
  * @param bool $login = false Set to true to make the user the current one
  * @param bool $cacheItemsOnLogin = false Set to true to cache some items when $login is true
  *
  * @return User|null
  */
 public static function getByUserID($uID, $login = false, $cacheItemsOnLogin = true)
 {
     $db = Database::connection();
     $v = array($uID);
     $q = "SELECT uID, uName, uIsActive, uLastOnline, uTimezone, uDefaultLanguage, uLastPasswordChange FROM Users WHERE uID = ? LIMIT 1";
     $r = $db->query($q, $v);
     $row = $r ? $r->FetchRow() : null;
     $nu = null;
     if ($row) {
         $nu = new User();
         $nu->setPropertiesFromArray($row);
         $nu->uGroups = $nu->_getUserGroups(true);
         $nu->superUser = $nu->getUserID() == USER_SUPER_ID;
         if ($login) {
             $nu->persist($cacheItemsOnLogin);
             $nu->recordLogin();
         }
     }
     return $nu;
 }
Beispiel #7
0
 /** Return an User instance given its id (or null if it's not found)
  * @param int $uID The id of the user
  * @param boolean $login = false Set to true to make the user the current one
  * @param boolean $cacheItemsOnLogin = false Set to true to cache some items when $login is true
  * @return User|null
  */
 public static function getByUserID($uID, $login = false, $cacheItemsOnLogin = true)
 {
     $db = Loader::db();
     $v = array($uID);
     $q = "SELECT uID, uName, uIsActive, uLastOnline, uTimezone, uDefaultLanguage, uLastPasswordChange FROM Users WHERE uID = ? LIMIT 1";
     $r = $db->query($q, $v);
     $row = $r ? $r->FetchRow() : null;
     $nu = null;
     if ($row) {
         $nu = new User();
         $nu->uID = $row['uID'];
         $nu->uName = $row['uName'];
         $nu->uIsActive = $row['uIsActive'];
         $nu->uDefaultLanguage = $row['uDefaultLanguage'];
         $nu->uLastLogin = $row['uLastLogin'];
         $nu->uTimezone = $row['uTimezone'];
         $nu->uGroups = $nu->_getUserGroups(true);
         $nu->superUser = $nu->getUserID() == USER_SUPER_ID;
         $nu->uLastPasswordChange = $row['uLastPasswordChange'];
         if ($login) {
             $session = Core::make('session');
             $session->set('uID', $row['uID']);
             $session->set('uName', $row['uName']);
             $session->set('uBlockTypesSet', false);
             $session->set('uGroups', $nu->uGroups);
             $session->set('uLastOnline', $row['uLastOnline']);
             $session->set('uTimezone', $row['uTimezone']);
             $session->set('uDefaultLanguage', $row['uDefaultLanguage']);
             $session->set('uLastPasswordChange', $row['uLastPasswordChange']);
             if ($cacheItemsOnLogin) {
                 Loader::helper('concrete/ui')->cacheInterfaceItems();
             }
             $nu->recordLogin();
         }
     }
     return $nu;
 }
Beispiel #8
0
 public function changePassword($newPassword)
 {
     $db = Loader::db();
     if ($this->uID) {
         $dh = Loader::helper('date');
         $dateTime = $dh->getOverridableNow();
         $v = array($this->getUserObject()->getUserPasswordHasher()->HashPassword($newPassword), $dateTime, $this->uID);
         $q = "update Users set uPassword = ?, uLastPasswordChange = ?  where uID = ?";
         $r = $db->prepare($q);
         $res = $db->execute($r, $v);
         $ue = new \Concrete\Core\User\Event\UserInfoWithPassword($this);
         $ue->setUserPassword($newPassword);
         $currentUser = new User();
         $session = Core::make('session');
         if ($currentUser->isLoggedIn() && $currentUser->getUserID() == $session->get('uID')) {
             $session->set('uLastPasswordChange', $dateTime);
         }
         Events::dispatch('on_user_change_password', $ue);
         return $res;
     }
 }
Beispiel #9
0
 /**
  * @return bool
  */
 public function isMyPile()
 {
     $u = new User();
     if ($u->isRegistered()) {
         return $this->getUserID() == $u->getUserID();
     }
 }
Beispiel #10
0
 public function getUserID()
 {
     return parent::getUserID();
 }
Beispiel #11
0
 /**
  * @param null|int $requesterUID
  * @return bool
  */
 function triggerDeactivate($requesterUID = null)
 {
     if ($requesterUID === null) {
         $u = new User();
         $requesterUID = $u->getUserID();
     }
     $db = $this->connection;
     $v = array($this->getUserID());
     $pkr = new ActivateUserWorkflowRequest();
     $pkr->setRequestAction('deactivate');
     $pkr->setRequestedUserID($this->getUserID());
     $pkr->setRequesterUserID($requesterUID);
     $pkr->trigger();
     $this->uIsActive = intval($db->GetOne('select uIsActive from Users where uID = ?', $v));
     return $this->isActive() == 0;
 }