/** * 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]); }
/** * 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)); }
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)); }
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)); }
/** * 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]); }
/** * 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]); }
/** * 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)); }
/** * 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]); }
/** * 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]); }
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; }
/** * 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; }
/** * 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]); }
/** * @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); }
/** * 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]); }
/** * 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]); }
/** * 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)); }
/** * @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; }
/** * 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]); }