示例#1
0
文件: ICUser.php 项目: AxelPanda/ibos
 public function beforeLogout()
 {
     $uid = $this->getId();
     Session::model()->deleteAllByAttributes(array("uid" => $uid));
     UserStatus::model()->updateByPk($uid, array("invisible" => 0));
     return true;
 }
示例#2
0
 public static function get_user_status($id)
 {
     $value = UserStatus::model()->findByAttributes(array('id' => $id));
     if (empty($value->status)) {
         return 'All';
     } else {
         return $value->status;
     }
 }
示例#3
0
 public function actionAdd()
 {
     MainUtil::checkLicenseLimit();
     if (EnvUtil::submitCheck("userSubmit")) {
         $origPass = filter_input(INPUT_POST, "password", FILTER_SANITIZE_STRING);
         $_POST["salt"] = StringUtil::random(6);
         $_POST["password"] = !empty($origPass) ? md5(md5($origPass) . $_POST["salt"]) : "";
         $_POST["createtime"] = TIMESTAMP;
         $_POST["guid"] = StringUtil::createGuid();
         $this->dealWithSpecialParams();
         $data = User::model()->create();
         $newId = User::model()->add($data, true);
         if ($newId) {
             UserCount::model()->add(array("uid" => $newId));
             $ip = Ibos::app()->setting->get("clientip");
             UserStatus::model()->add(array("uid" => $newId, "regip" => $ip, "lastip" => $ip));
             UserProfile::model()->add(array("uid" => $newId));
             if (!empty($_POST["auxiliarydept"])) {
                 $deptIds = StringUtil::getId($_POST["auxiliarydept"]);
                 $this->handleAuxiliaryDept($newId, $deptIds, $_POST["deptid"]);
             }
             if (!empty($_POST["auxiliarypos"])) {
                 $posIds = StringUtil::getId($_POST["auxiliarypos"]);
                 $this->handleAuxiliaryPosition($newId, $posIds, $_POST["positionid"]);
             }
             $newUser = User::model()->fetchByPk($newId);
             $users = UserUtil::loadUser();
             $users[$newId] = UserUtil::wrapUserInfo($newUser);
             User::model()->makeCache($users);
             OrgUtil::update();
             OrgUtil::hookSyncUser($newId, $origPass, 1);
             $this->success(Ibos::lang("Save succeed", "message"), $this->createUrl("user/index"));
         } else {
             $this->error(Ibos::lang("Add user failed"), $this->createUrl("user/index"));
         }
     } else {
         $deptid = "";
         $manager = "";
         $account = Ibos::app()->setting->get("setting/account");
         if ($account["mixed"]) {
             $preg = "[0-9]+[A-Za-z]+|[A-Za-z]+[0-9]+";
         } else {
             $preg = "^[A-Za-z0-9\\!\\@\\#\$\\%\\^\\&\\*\\.\\~]{" . $account["minlength"] . ",32}\$";
         }
         if ($deptid = EnvUtil::getRequest("deptid")) {
             $deptid = StringUtil::wrapId(EnvUtil::getRequest("deptid"), "d");
             $manager = StringUtil::wrapId(Department::model()->fetchManagerByDeptid(EnvUtil::getRequest("deptid")), "u");
         }
         $this->setPageTitle(Ibos::lang("Add user"));
         $this->setPageState("breadCrumbs", array(array("name" => Ibos::lang("Organization"), "url" => $this->createUrl("department/index")), array("name" => Ibos::lang("User manager"), "url" => $this->createUrl("user/index")), array("name" => Ibos::lang("Add user"))));
         $this->render("add", array("deptid" => $deptid, "manager" => $manager, "passwordLength" => $account["minlength"], "preg" => $preg));
     }
 }
 public function actionIndex()
 {
     $status = UserStatus::model()->findByPk(Yii::app()->user->userId);
     $refreshTime = $status->refreshTime;
     $result = Plan::model()->findAllByAttributes(array('userId' => Yii::app()->user->userId));
     $primaryKeys = array();
     foreach ($result as $value) {
         array_push($primaryKeys, $value->primaryKey);
     }
     $criteria = new CDbCriteria();
     $criteria->addInCondition('planId', $primaryKeys);
     $criteria->addCondition('createTime>=' . $refreshTime);
     $inbox = PlanComment::model()->findAll($criteria);
     $count = count($inbox);
     if ($count > 0) {
         $this->send(ERROR_NONE, $inbox, false, array('count' => $count), false);
     }
     //传递一个已读未读的标志位
     if (isset($_POST['read'])) {
         $status->refreshTime = time();
         $status->save();
     }
     $this->render('index');
 }
示例#5
0
 public function handleInitSession($event)
 {
     $global = Ibos::app()->setting->toArray();
     Ibos::app()->session->load($global["cookie"]["sid"], $global["clientip"], Ibos::app()->user->isGuest ? 0 : Ibos::app()->user->uid);
     $global["sid"] = Ibos::app()->session->sid;
     $global["session"] = Ibos::app()->session->var;
     if (!empty($global["sid"]) && $global["sid"] != $global["cookie"]["sid"]) {
         MainUtil::setCookie("sid", $global["sid"], 86400);
     }
     Ibos::app()->setting->copyFrom($global);
     $isNewSession = Ibos::app()->session->isNew;
     if ($isNewSession) {
         if (EnvUtil::ipBanned($global["clientip"])) {
             Ibos::error(Ibos::lang("User banned", "message"));
         }
     }
     if (!Ibos::app()->user->isGuest && ($isNewSession || Ibos::app()->session->getKey("lastactivity") + 600 < TIMESTAMP)) {
         Ibos::app()->session->setKey("lastactivity", TIMESTAMP);
         if ($isNewSession) {
             UserStatus::model()->updateByPk(Ibos::app()->user->uid, array("lastip" => $global["clientip"], "lastvisit" => TIMESTAMP));
         }
     }
 }
示例#6
0
 public function updateSession()
 {
     static $updated = false;
     if (!$updated) {
         $global = Ibos::app()->setting->toArray();
         if (!Ibos::app()->user->isGuest) {
             if (isset($global["cookie"]["ulastactivity"])) {
                 $userLastActivity = StringUtil::authCode($global["cookie"]["ulastactivity"], "DECODE");
             } else {
                 $userLastActivity = UserUtil::getUserProfile("lastactivity");
                 MainUtil::setCookie("ulastactivity", StringUtil::authCode($userLastActivity, "ENCODE"), 31536000);
             }
         }
         $onlineTimeSpan = 10;
         $lastOnlineUpdate = $this->var["lastolupdate"];
         $onlineTimeOffset = $lastOnlineUpdate ? $lastOnlineUpdate : $userLastActivity;
         $allowUpdateOnlineTime = $onlineTimeSpan * 60 < TIMESTAMP - $onlineTimeOffset;
         if (!Ibos::app()->user->isGuest && $allowUpdateOnlineTime) {
             $updateStatus = OnlineTime::model()->updateOnlineTime(Ibos::app()->user->uid, $onlineTimeSpan, $onlineTimeSpan, TIMESTAMP);
             if ($updateStatus === false) {
                 $onlineTime = new OnlineTime();
                 $onlineTime->uid = Ibos::app()->user->uid;
                 $onlineTime->thismonth = $onlineTimeSpan;
                 $onlineTime->total = $onlineTimeSpan;
                 $onlineTime->lastupdate = $global["timestamp"];
                 $onlineTime->save();
             }
             $this->setKey("lastolupdate", TIMESTAMP);
         }
         $this->var["invisible"] = UserUtil::getUserProfile("invisible");
         foreach ($this->var as $key => $value) {
             if (Ibos::app()->user->hasState($key) && $key != "lastactivity") {
                 $this->setKey($key, Ibos::app()->user->{$key});
             }
         }
         Ibos::app()->session->update();
         if (!Ibos::app()->user->isGuest) {
             $updateStatusField = array("lastip" => $global["clientip"], "lastactivity" => TIMESTAMP, "lastvisit" => TIMESTAMP, "invisible" => 1);
             if (21600 < TIMESTAMP - $userLastActivity) {
                 if ($onlineTimeSpan && 43200 < TIMESTAMP - $userLastActivity) {
                     $onlineTime = OnlineTime::model()->fetchByPk(Ibos::app()->user->uid);
                     UserCount::model()->updateByPk(Ibos::app()->user->uid, array("oltime" => round(intval($onlineTime["total"]) / 60)));
                 }
                 MainUtil::setCookie("ulastactivity", StringUtil::authCode(TIMESTAMP, "ENCODE"), 31536000);
                 UserStatus::model()->updateByPk(Ibos::app()->user->uid, $updateStatusField);
             }
         }
         $updated = true;
     }
     return $updated;
 }
示例#7
0
        <h5>Manage Admin User</h5>
        <div class="widget-toolbar">
            <a data-action="settings" href="#"><i class="icon-cog"></i></a>
            <a data-action="reload" href="#"><i class="icon-refresh"></i></a>
            <a data-action="collapse" href="#"><i class="icon-chevron-up"></i></a>
            <a data-action="close" href="#"><i class="icon-remove"></i></a>
        </div>
        <div class="widget-toolbar">
            <?php 
echo CHtml::link('<i class="icon-search"></i>', '#', array('class' => 'search-button', 'data-rel' => 'tooltip', 'title' => 'Search', 'data-placement' => 'bottom'));
?>
        </div>
        <div class="widget-toolbar">
            <?php 
echo CHtml::link('<i class="icon-plus"></i>', array('create'), array('data-rel' => 'tooltip', 'title' => 'Add', 'data-placement' => 'bottom'));
?>
        </div>
    </div><!--/.widget-header -->
    <div class="widget-body">
        <div class="widget-main">
            <div class="search-form" style="display:none">
                <?php 
$this->renderPartial('_search', array('model' => $model));
?>
            </div><!-- search-form -->
            <?php 
$this->widget('bootstrap.widgets.TbGridView', array('type' => TbHtml::GRID_TYPE_HOVER, 'id' => 'user-admin-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array(array('name' => 'profile_picture', 'type' => 'raw', 'value' => 'CHtml::link(UserAdmin::get_picture_grid($data->id), array("view","id"=>$data->id))', 'htmlOptions' => array('style' => "text-align:left;width:50px;", 'title' => 'Picture', 'class' => 'ace-thumbnails')), array('name' => 'name', 'type' => 'raw', 'value' => 'CHtml::link(CHtml::encode($data->name), array("view","id"=>$data->id))', 'htmlOptions' => array('style' => "text-align:left;", 'title' => 'Name')), 'username', array('name' => 'email', 'type' => 'raw', 'value' => 'CHtml::mailto(CHtml::encode($data->email), $email=CHtml::encode($data->name)." <".CHtml::encode($data->email).">")', 'htmlOptions' => array('style' => "text-align:left;", 'rel' => 'tooltip', 'data-original-title' => 'Email')), array('name' => 'registerDate', 'value' => 'UserAdmin::get_date($data->registerDate)', 'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array('model' => $model, 'attribute' => 'registerDate', 'htmlOptions' => array('id' => 'datepicker1', 'size' => '10'), 'i18nScriptFile' => 'jquery.ui.datepicker-en.js', 'defaultOptions' => array('showOn' => 'focus', 'dateFormat' => 'yy-mm-dd', 'showOtherMonths' => true, 'selectOtherMonths' => true, 'changeMonth' => true, 'changeYear' => true, 'showButtonPanel' => false)), true), 'htmlOptions' => array('style' => "text-align:center;")), array('header' => 'Group', 'name' => 'title', 'type' => 'raw', 'filter' => CHtml::activeDropDownList($model, 'group_id', CHtml::listData(UserGroup::model()->findAll(array('order' => 'id')), 'id', 'title'), array('empty' => 'All')), 'value' => '$data->UserGroup->title', 'htmlOptions' => array('style' => 'text-align:left;', 'title' => 'Group')), array('name' => 'status', 'type' => 'raw', 'filter' => CHtml::activeDropDownList($model, 'status', CHtml::listData(UserStatus::model()->findAll(array("order" => "status")), 'id', 'status'), array('empty' => 'All')), 'value' => '$data->UserStatus->status', 'htmlOptions' => array('style' => "text-align:left;", 'title' => 'Status')), array('header' => 'Actions', 'class' => 'bootstrap.widgets.TbButtonColumn'))));
?>
        </div>
    </div><!--/.widget-body -->
</div><!--/.widget-box -->
示例#8
0
?>
            <?php 
echo $form->textFieldControlGroup($model, 'name', array('class' => 'span5', 'maxlength' => 255));
?>
            <?php 
echo $form->textFieldControlGroup($model, 'username', array('class' => 'span5', 'maxlength' => 150));
?>
            <?php 
echo $form->textFieldControlGroup($model, 'email', array('class' => 'span5', 'maxlength' => 100));
?>
            
            <?php 
echo $form->dropDownListControlGroup($model, 'group_id', CHtml::listData(UserGroup::model()->findAll(array("order" => "id")), 'id', 'title'), array('empty' => '--please select--', 'class' => 'span5'));
?>
            <?php 
echo $form->dropDownListControlGroup($model, 'status', CHtml::listData(UserStatus::model()->findAll(array("order" => "status")), 'id', 'status'), array('empty' => '--please select--', 'class' => 'span5'));
?>
        </div>        
        <div id="tab2" class="tab-pane">          
            <?php 
echo $form->dropDownListControlGroup($model_profile, 'country_id', CHtml::listData(Country::model()->findAll(array('condition' => 'published=1', "order" => "country_name")), 'id', 'country_name'), array('empty' => '--please select--', 'class' => 'span5', 'options' => array('18' => array('selected' => true))));
?>
            <?php 
echo $form->dropDownListControlGroup($model_profile, 'state_id', CHtml::listData(State::model()->findAll(array('condition' => 'published=1', "order" => "state_name")), 'id', 'state_name'), array('empty' => '--please select--', 'class' => 'span5', 'options' => array()));
?>
            <?php 
echo $form->dropDownListControlGroup($model_profile, 'city_id', CHtml::listData(City::model()->findAll(array('condition' => 'published=1', "order" => "city_name")), 'id', 'city_name'), array('empty' => '--please select--', 'class' => 'span5', 'options' => array()));
?>
            <?php 
echo $form->textFieldControlGroup($model_profile, 'address', array('class' => 'span5', 'maxlength' => 255));
?>
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer the ID of the model to be loaded
  */
 public function loadModel($id)
 {
     $model = UserStatus::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
示例#10
0
 private function addUser()
 {
     if (Ibos::app()->request->isAjaxRequest) {
         $fields = array("username", "password", "realname", "mobile", "deptid", "positionid", "email");
         if (empty($_POST["username"]) || empty($_POST["password"])) {
             $this->ajaxReturn(array("isSuccess" => false, "msg" => Ibos::lang("Username or password not empty")));
         }
         foreach ($fields as $field) {
             if (isset($_POST[$field]) && !empty($_POST[$field])) {
                 $_POST[$field] = StringUtil::filterDangerTag($_POST[$field]);
             }
         }
         $salt = StringUtil::random(6);
         $userData = array("salt" => $salt, "username" => $_POST["username"], "password" => !empty($_POST["password"]) ? md5(md5($_POST["password"]) . $salt) : "", "realname" => $_POST["realname"], "mobile" => $_POST["mobile"], "createtime" => TIMESTAMP, "deptid" => intval($_POST["deptid"]), "positionid" => intval($_POST["positionid"]), "email" => $_POST["email"]);
         $newId = User::model()->add($userData, true);
         if ($newId) {
             UserCount::model()->add(array("uid" => $newId));
             $ip = Ibos::app()->setting->get("clientip");
             UserStatus::model()->add(array("uid" => $newId, "regip" => $ip, "lastip" => $ip));
             UserProfile::model()->add(array("uid" => $newId));
             $newUser = User::model()->fetchByPk($newId);
             $users = UserUtil::loadUser();
             $users[$newId] = UserUtil::wrapUserInfo($newUser);
             User::model()->makeCache($users);
             OrgUtil::update();
             $res["isSuccess"] = true;
         } else {
             $res["isSuccess"] = false;
             $res["msg"] = Ibos::lang("Add user failed");
         }
         $this->ajaxReturn($res);
     }
 }