示例#1
0
 /**
  * Manages list of cronjobs
  * @param null|int $delete
  */
 public function actionCrontab($delete = null)
 {
     if (isset($_POST['action'])) {
         $condition = new ModelCondition(array('model' => Crontab::className()));
         $condition->compareColumn('id', $_POST['Crontab']);
         switch ($_POST['action']) {
             case 'enable':
                 $n = Crontab::updateAll(array('enabled' => 1), $condition);
                 Messages::get()->success("{$n} jobs enabled!");
                 break;
             case 'disable':
                 $n = Crontab::updateAll(array('enabled' => 0), $condition);
                 Messages::get()->success("{$n} jobs disabled!");
                 break;
         }
         $this->getRequest()->goBack();
     }
     if ($delete && is_int($delete)) {
         $success = Crontab::findByPk($delete)->delete();
         if ($success) {
             Messages::get()->success('Cron job has been removed!');
         } else {
             Messages::get()->warning('There was an error while trying to delete the job!');
         }
         $this->getRequest()->goBack();
     }
     $model = Crontab::model();
     if (isset($_GET['Crontab'])) {
         $model->setAttributes($_GET['Crontab']);
     }
     $this->assign('model', $model);
 }
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "reply_id", "level", "user_id", "vote", "time"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#3
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(array('model' => __CLASS__));
     foreach (array("id", "auto", "title", "description") as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(array('modelCondition' => $condition));
 }
示例#4
0
 public function getDataProvider()
 {
     $condition = new ModelCondition(array('model' => __CLASS__));
     foreach (array('id', 'name', 'label') as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, in_array($column, array('name', 'label')));
         }
     }
     return new DataProvider(array('modelCondition' => $condition));
 }
示例#5
0
 public function getDataProvider()
 {
     $condition = new ModelCondition(array('model' => __CLASS__));
     foreach (array('id', 'user', 'interval', 'command', 'log', 'enabled', 'laststart') as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, !in_array($column, array('id', 'enabled')));
         }
     }
     return new DataProvider(array('modelCondition' => $condition));
 }
示例#6
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "name", "default_visitors_group_id", "default_members_group_id", "owner_user_id"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#7
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @param int $sectionId
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider($sectionId)
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     $condition->compareColumn('section_id', $sectionId);
     foreach (["id", "section_id", "title", "icon", "description"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#8
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(array('model' => __CLASS__));
     foreach (array("id", "user_id", "action", "admin_id", "comment", "ip") as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(array('modelCondition' => $condition));
 }
示例#9
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "post_id", "user_id", "edits", "status", "edited_by", "username", "text", "published_time", "email", "last_edit_time"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#10
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "user_id", "subcategory_id", "category_id", "section_id", "title", "content", "keywords", "score", "replies", "views", "create_time", "edit_time", "edit_user_id", "sticky", "order", "closed", "last_reply_id", "last_reply_user_id", "last_reply_date"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#11
0
 public static function getForCategory($category, $page)
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     $condition->compareColumn('category_id', $category);
     $condition->compareColumn("status", self::STATUS_PUBLISHED);
     $condition->with = ['author', 'category'];
     $condition->limit = BlogConfig::get()->postsPerPage;
     $condition->order = '`t`.`id` DESC';
     $condition->offset = ($page - 1) * BlogConfig::get()->postsPerPage;
     $r = self::findAll($condition);
     self::$totalResults = self::count($condition);
     return $r;
 }
示例#12
0
 /**
  * Calls PDO query with PDO::FETCH_CLASS option;
  * @link http://ro1.php.net/pdo.query
  * @param string $statement
  * @param string $classname
  * @param array $params
  * @param array $ctorargs
  * @return array|null
  * @throws \PDOException
  */
 public function queryClass($statement, $classname, $params = array(), $ctorargs = array())
 {
     $start = microtime(true);
     $q = $statement . '';
     if (is_a($statement, ModelCondition::className())) {
         foreach ($statement->getJoinParams() as $k => $v) {
             $params[$k] = $v;
         }
     }
     $statement = $this->prepare($q);
     try {
         $statement->execute($params);
     } catch (\PDOException $e) {
         $this->error($e->getMessage(), array('File' => __FILE__, 'Line' => __LINE__ - 4, 'Query' => $q, 'Params' => $params, 'Trace' => $e->getTraceAsString()));
         return null;
     }
     $objects = array();
     while ($ob = $statement->fetchObject($classname, $ctorargs)) {
         $objects[] = $ob;
     }
     $this->debug($q, array('params' => $params, 'intoClass' => $classname, 'controllerArguments' => $ctorargs, 'rows' => count($objects), 'time' => microtime(true) - $start, 'dns' => $this->dns));
     return $objects;
 }
示例#13
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "name", "url_friendly_name", "order", "user_id", "section_id"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     $condition->with = ['author'];
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#14
0
文件: DbModel.php 项目: mpf-soft/mpf
 /**
  * @param $fields
  * @param $condition
  * @param array $params
  * @return int
  */
 public static function updateAll($fields, $condition, $params = array())
 {
     if (!is_a($condition, '\\mpf\\datasources\\sql\\ModelCondition')) {
         $condition = ModelCondition::getFrom($condition, get_called_class());
     }
     /* @var $condition \mpf\datasources\sql\ModelCondition */
     $condition->setParams($params);
     return static::getDb()->table(static::getTableName())->where($condition->getCondition())->setParams($condition->getParams())->update($fields);
 }
示例#15
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @param int $sectionId
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider($sectionId)
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "full_name", "html_class", "admin", "moderator", "newthread", "threadreply", "canread"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     $condition->compareColumn("section_id", $sectionId);
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#16
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "name", "added_by", "added_time"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
示例#17
0
 /**
  * Section and module are used by different modules when they required user list. For example forum module and later
  * maybe blog module or messaging.
  * @param int $section
  * @param string $module
  * @return DataProvider
  */
 public function getDataProvider($section = null, $module = null)
 {
     $condition = new ModelCondition(array('model' => __CLASS__));
     if ('forum' == $module && $section) {
         // filter users for this section;
     }
     foreach (array('id', 'name', 'email', 'status', 'register_date', 'last_login', 'last_login_source') as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, !in_array($column, array('id', 'status', 'last_login_source')));
         }
     }
     return new DataProvider(array('modelCondition' => $condition));
 }
示例#18
0
 /**
  * @param DbModel[] $models
  * @param string|array $fields
  * @return ModelCondition
  */
 public function getConditionForModels($models, $fields)
 {
     $key = '__parentRelationKey';
     $column = "(CASE ";
     $mCondition = new ModelCondition(['model' => $this->model]);
     if ($this->joins) {
         foreach ($this->joins as $join) {
             if (is_array($join[0])) {
                 $t = '`' . key($join[0]) . '` as `' . current($join[0]) . '`';
             } else {
                 $t = '`' . $join[0] . '`';
             }
             $c = [];
             // columns;
             foreach ($join[1] as $col1 => $col2) {
                 if (is_array($col2)) {
                 } else {
                     if ('!=' == substr($col2, 0, 2)) {
                     } elseif ('>=' == substr($col2, 0, 2)) {
                     } elseif ('<=' == substr($col2, 0, 2)) {
                     } elseif ('>' == $col2[0]) {
                     } elseif ('<' == $col2[0]) {
                     } else {
                     }
                 }
             }
             // values;
             foreach ($join[2] as $col => $value) {
                 if (is_array($value)) {
                 } else {
                     if ('!=' == substr($value, 0, 2)) {
                     } elseif ('>=' == substr($value, 0, 2)) {
                     } elseif ('<=' == substr($value, 0, 2)) {
                     } elseif ('>' == $value[0]) {
                     } elseif ('<' == $value[0]) {
                     } else {
                     }
                 }
             }
             // type;
             $mCondition->join .= $join[3] . $t . " ON (" . implode(') AND (', $c) . ")";
         }
     }
     foreach ($this->conditions as $ck => $condition) {
         switch ($condition[0]) {
             case "=":
             case "!=":
                 $parentColumn = $condition[1];
                 // for now it only supports single column for this type of relations;
                 $relationColumn = $condition[2];
                 // same for relation column
                 if (is_string($parentColumn) && (false !== strpos($parentColumn, '.') && false !== strpos($parentColumn, '_'))) {
                     $r = $relationColumn;
                     $relationColumn = $parentColumn;
                     $parentColumn = $r;
                 }
                 if (is_array($relationColumn)) {
                     $relationColumnListForIn = [];
                     foreach ($relationColumn as $c) {
                         $relationColumnListForIn[] = $this->_column($c, true);
                     }
                     $relationColumnListForIn = implode(', ', $relationColumnListForIn);
                 } else {
                     $relationColumnListForIn = $relationColumn;
                 }
                 $conditionParts = [];
                 foreach ($models as $mk => $model) {
                     // generates CASE column WHEN parentv1 THEN parentk1 WHEN parentv2 THEN parentk2 ELSE -1 AS __parentRelationKey  + the condition itself
                     $paramKey = ':' . $ck . '_' . $mk . '_';
                     if (is_array($parentColumn) && is_array($relationColumn)) {
                         $column .= "WHEN (";
                         $columnList = [];
                         foreach ($parentColumn as $col) {
                             $mCondition->setParam($paramKey . $col, $model->{$col});
                             $conditionParts[] = $paramKey . $col . ('!=' == $condition[0] ? 'NOT' : '') . ' IN ( ' . $relationColumnListForIn . ' )';
                             $columnList[] = $paramKey . $col . ('!=' == $condition[0] ? 'NOT' : '') . ' IN ( ' . $relationColumnListForIn . ' )';
                         }
                         $column .= implode(' OR ', $columnList);
                         $column .= ") THEN {$mk} ";
                     } elseif (is_array($parentColumn)) {
                         $column .= "WHEN (" . $this->_column($relationColumn, true) . ('!=' == $condition[0] ? 'NOT' : '') . ' IN ';
                         $paramList = [];
                         foreach ($parentColumn as $col) {
                             $mCondition->setParam($paramKey . $col, $model->{$col});
                             $paramList[] = $paramKey . $col;
                         }
                         $conditionParts[] = $this->_column($relationColumn, true) . ('!=' == $condition[0] ? 'NOT' : '') . ' IN (' . implode(', ', $paramList) . ')';
                         $column .= "(" . implode(", ", $paramList) . ")";
                         $column .= ") THEN {$mk} ";
                     } elseif (is_array($relationColumn)) {
                         $mCondition->setParam($paramKey . $parentColumn, $model->{$parentColumn});
                         $conditionParts[] = $paramKey . $parentColumn . ('!=' == $condition[0] ? 'NOT' : '') . " IN ({$relationColumnListForIn})";
                         $column .= "WHEN {$paramKey} . {$parentColumn} " . ('!=' == $condition[0] ? 'NOT' : '') . " IN ({$relationColumnListForIn}) THEN {$mk} ";
                     } else {
                         if ("(CASE " == $column) {
                             $column .= $this->_column($relationColumn, true);
                         }
                         $p = str_replace('.', '__', $paramKey . $relationColumn);
                         $mCondition->setParam($p, $model->{$parentColumn});
                         $conditionParts[] = $p;
                         $column .= " WHEN " . $p . " THEN {$mk} ";
                     }
                 }
                 if (is_string($parentColumn) && is_string($relationColumn)) {
                     $mCondition->addCondition($this->_column($relationColumn, true) . ('!=' == $condition[0] ? 'NOT' : '') . " IN (" . implode(', ', $conditionParts) . ")");
                 } else {
                     $mCondition->addCondition('(' . implode(") OR (", $conditionParts) . ')');
                 }
                 break;
             case "==":
             case "=attribute":
                 if ($condition[0] == '=attribute') {
                     // for attribute read the value
                     $parentModel = get_class(current($models));
                     $c = $condition[2];
                     if (false === strpos($c, '(')) {
                         $condition[2] = $parentModel::$c;
                     } else {
                         // for method call it and get the value;
                         $c = substr($c, 0, strlen($c) - 2);
                         $condition[2] = call_user_func("{$parentModel}::{$c}");
                     }
                 }
                 $mCondition->compareColumn($condition[1], $condition[2]);
                 break;
         }
     }
     $column .= "ELSE -1 END) AS `{$key}`";
     //die($column);
     if (is_array($fields)) {
         $fields[] = $column;
     } else {
         $fields .= ', ' . $column;
     }
     $mCondition->fields = $fields;
     return $mCondition;
 }
示例#19
0
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider()
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     foreach (["id", "user_id", "reply_id", "section_id", "thread_id", "content", "time", "edited", "edit_time", "edit_user_id", "deleted", "score", "user_group_id"] as $column) {
         if ($column == "reply_id" && $this->_tableName == 'forum_replies') {
             continue;
         }
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     return new DataProvider(['modelCondition' => $condition]);
 }
 /**
  * @return ForumThread[]
  */
 public function getTopPostsForCategoryPage()
 {
     $condition = new ModelCondition(['model' => ForumThread::className()]);
     $condition->with = ['lastActiveUser', 'owner'];
     $condition->compareColumn("subcategory_id", $this->id);
     $condition->compareColumn('deleted', 0);
     $condition->order = "`t`.`order` DESC, `t`.`id` DESC";
     $condition->limit = 10;
     return ForumThread::findAll($condition);
 }
 /**
  * Gets DataProvider used later by widgets like \mpf\widgets\datatable\Table to manage models.
  * @return \mpf\datasources\sql\DataProvider
  */
 public function getDataProvider($sectionId)
 {
     $condition = new ModelCondition(['model' => __CLASS__]);
     $condition->with = ['user', 'group', 'title'];
     $condition->compareColumn("section_id", $sectionId);
     foreach (["id", "section_id", "muted", "banned", "title_id", "group_id", "member_since", "signature"] as $column) {
         if ($this->{$column}) {
             $condition->compareColumn($column, $this->{$column}, true);
         }
     }
     if ($this->user_id && !is_numeric($this->user_id)) {
         $condition->compareColumn('user.name', $this->user_id);
     } elseif ($this->user_id) {
         $condition->compareColumn('user_id', $this->user_id);
     }
     return new DataProvider(['modelCondition' => $condition]);
 }