function saveWorkerPeekAction() { $translate = DevblocksPlatform::getTranslationService(); $active_worker = FegApplication::getActiveWorker(); if (!$active_worker || !$active_worker->is_superuser) { return; } @($id = DevblocksPlatform::importGPC($_POST['id'], 'integer')); @($view_id = DevblocksPlatform::importGPC($_POST['view_id'], 'string')); @($first_name = DevblocksPlatform::importGPC($_POST['first_name'], 'string')); @($last_name = DevblocksPlatform::importGPC($_POST['last_name'], 'string')); @($title = DevblocksPlatform::importGPC($_POST['title'], 'string')); @($email = DevblocksPlatform::importGPC($_POST['email'], 'string')); @($password = DevblocksPlatform::importGPC($_POST['password'], 'string')); @($is_superuser = DevblocksPlatform::importGPC($_POST['is_superuser'], 'integer', 0)); @($disabled = DevblocksPlatform::importGPC($_POST['is_disabled'], 'integer', 0)); // @$group_ids = DevblocksPlatform::importGPC($_POST['group_ids'],'array'); // @$group_roles = DevblocksPlatform::importGPC($_POST['group_roles'],'array'); @($delete = DevblocksPlatform::importGPC($_POST['do_delete'], 'integer', 0)); // [TODO] The superuser set bit here needs to be protected by ACL if (empty($first_name)) { $first_name = "Anonymous"; } if (!empty($id) && !empty($delete)) { // Can't delete or disable self if ($active_worker->id != $id) { DAO_Worker::delete($id); } } else { if (empty($id) && null == DAO_Worker::getWhere(sprintf("%s=%s", DAO_Worker::EMAIL, Feg_ORMHelper::qstr($email)))) { $workers = DAO_Worker::getAll(); $license = FegLicense::getInstance(); if (!empty($license) && !empty($license['serial']) || count($workers) < 3) { // Creating new worker. If password is empty, email it to them if (empty($password)) { $settings = DevblocksPlatform::getPluginSettingsService(); $replyFrom = $settings->get('feg.core', FegSettings::DEFAULT_REPLY_FROM); $replyPersonal = $settings->get('feg.core', FegSettings::DEFAULT_REPLY_PERSONAL, ''); $url = DevblocksPlatform::getUrlService(); $password = FegApplication::generatePassword(8); } $fields = array(DAO_Worker::EMAIL => $email, DAO_Worker::PASS => $password); $id = DAO_Worker::create($fields); } } // end create worker // Update $fields = array(DAO_Worker::FIRST_NAME => $first_name, DAO_Worker::LAST_NAME => $last_name, DAO_Worker::TITLE => $title, DAO_Worker::EMAIL => $email, DAO_Worker::IS_SUPERUSER => $is_superuser, DAO_Worker::IS_DISABLED => $disabled); // if we're resetting the password if (!empty($password)) { $fields[DAO_Worker::PASS] = md5($password); } // Update worker DAO_Worker::update($id, $fields); // Custom field saves @($field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array())); DAO_CustomFieldValue::handleFormPost(FegCustomFieldSource_Worker::ID, $id, $field_ids); } if (!empty($view_id)) { $view = Feg_AbstractViewLoader::getView($view_id); $view->render(); } }
/** * Enter description here... * * @param array $columns * @param DevblocksSearchCriteria[] $params * @param integer $limit * @param integer $page * @param string $sortBy * @param boolean $sortAsc * @param boolean $withCounts * @return array */ static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true) { $db = DevblocksPlatform::getDatabaseService(); $fields = SearchFields_ImportSource::getFields(); // Sanitize if (!isset($fields[$sortBy])) { $sortBy = null; } list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy); $start = $page * $limit; // [JAS]: 1-based $total = -1; $select_sql = sprintf("SELECT " . "import_source.id as %s, " . "import_source.name as %s, " . "import_source.path as %s, " . "import_source.type as %s, " . "import_source.is_disabled as %s ", SearchFields_ImportSource::ID, SearchFields_ImportSource::NAME, SearchFields_ImportSource::PATH, SearchFields_ImportSource::TYPE, SearchFields_ImportSource::IS_DISABLED); $join_sql = "FROM import_source "; // Custom field joins list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables($tables, $params, 'import_source.id', $select_sql, $join_sql); $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : ""); $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " "; $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY import_source.id ' : '') . $sort_sql; // [TODO] Could push the select logic down a level too if ($limit > 0) { $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ } else { $rs = $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ $total = mysql_num_rows($rs); } $results = array(); while ($row = mysql_fetch_assoc($rs)) { $result = array(); foreach ($row as $f => $v) { $result[$f] = $v; } $object_id = intval($row[SearchFields_ImportSource::ID]); $results[$object_id] = $result; } // [JAS]: Count all if ($withCounts) { $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT import_source.id) " : "SELECT COUNT(import_source.id) ") . $join_sql . $where_sql; $total = $db->GetOne($count_sql); } mysql_free_result($rs); return array($results, $total); }
/** * Enter description here... * * @param DevblocksSearchCriteria[] $params * @param integer $limit * @param integer $page * @param string $sortBy * @param boolean $sortAsc * @param boolean $withCounts * @return array */ static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true) { $db = DevblocksPlatform::getDatabaseService(); $fields = SearchFields_Worker::getFields(); // Sanitize if (!isset($fields[$sortBy])) { $sortBy = null; } list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy); $start = $page * $limit; // [JAS]: 1-based [TODO] clean up + document $total = -1; $select_sql = sprintf("SELECT " . "w.id as %s, " . "w.first_name as %s, " . "w.last_name as %s, " . "w.title as %s, " . "w.email as %s, " . "w.is_superuser as %s, " . "w.last_activity_date as %s, " . "w.is_disabled as %s ", SearchFields_Worker::ID, SearchFields_Worker::FIRST_NAME, SearchFields_Worker::LAST_NAME, SearchFields_Worker::TITLE, SearchFields_Worker::EMAIL, SearchFields_Worker::IS_SUPERUSER, SearchFields_Worker::LAST_ACTIVITY_DATE, SearchFields_Worker::IS_DISABLED); $join_sql = "FROM worker w "; // Custom field joins list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables($tables, $params, 'w.id', $select_sql, $join_sql); $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : ""); $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " "; $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY w.id ' : '') . $sort_sql; // [TODO] Could push the select logic down a level too if ($limit > 0) { $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); } else { $rs = $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); $total = mysql_num_rows($rs); } $results = array(); while ($row = mysql_fetch_assoc($rs)) { $result = array(); foreach ($row as $f => $v) { $result[$f] = $v; } $object_id = intval($row[SearchFields_Worker::ID]); $results[$object_id] = $result; } // [JAS]: Count all if ($withCounts) { $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT w.id) " : "SELECT COUNT(w.id) ") . $join_sql . $where_sql; $total = $db->GetOne($count_sql); } mysql_free_result($rs); return array($results, $total); }
function doRecoverStep3Action() { @($password = DevblocksPlatform::importGPC($_REQUEST['password'], 'string')); $email = $_SESSION[self::KEY_FORGOT_EMAIL]; $sentcode = $_SESSION[self::KEY_FORGOT_SENTCODE]; $code = $_SESSION[self::KEY_FORGOT_CODE]; $worker = null; $results = DAO_Worker::getWhere(sprintf("%s = %s", DAO_Worker::EMAIL, Feg_ORMHelper::qstr($email))); if (!empty($results)) { $worker = array_shift($results); } if (empty($email) || empty($code) || empty($worker)) { return; } if (0 == strcmp($sentcode, $code)) { // passed DAO_Worker::update($worker->id, array(DAO_Worker::PASS => md5($password))); unset($_SESSION[self::KEY_FORGOT_EMAIL]); unset($_SESSION[self::KEY_FORGOT_CODE]); unset($_SESSION[self::KEY_FORGOT_SENTCODE]); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('login'))); } else { DevblocksPlatform::redirect(new DevblocksHttpResponse(array('login', 'forgot', 'step2'))); } }
/** * Enter description here... * * @param array $columns * @param DevblocksSearchCriteria[] $params * @param integer $limit * @param integer $page * @param string $sortBy * @param boolean $sortAsc * @param boolean $withCounts * @return array */ static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true) { $db = DevblocksPlatform::getDatabaseService(); $fields = SearchFields_MessageRecipient::getFields(); // Sanitize if (!isset($fields[$sortBy])) { $sortBy = null; } list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy); $start = $page * $limit; // [JAS]: 1-based $total = -1; $select_sql = sprintf("SELECT " . "mr.id as %s, " . "mr.recipient_id as %s, " . "mr.message_id as %s, " . "mr.account_id as %s, " . "mr.send_status as %s, " . "mr.fax_id as %s, " . "mr.updated_date as %s, " . "mr.closed_date as %s ", SearchFields_MessageRecipient::ID, SearchFields_MessageRecipient::RECIPIENT_ID, SearchFields_MessageRecipient::MESSAGE_ID, SearchFields_MessageRecipient::ACCOUNT_ID, SearchFields_MessageRecipient::SEND_STATUS, SearchFields_MessageRecipient::FAX_ID, SearchFields_MessageRecipient::UPDATED_DATE, SearchFields_MessageRecipient::CLOSED_DATE); $join_sql = "FROM message_recipient mr "; // Custom field joins list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables($tables, $params, 'mr.id', $select_sql, $join_sql); $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : ""); $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " "; $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY mr.id ' : '') . $sort_sql; // [TODO] Could push the select logic down a level too if ($limit > 0) { $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ } else { $rs = $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ $total = mysql_num_rows($rs); } $results = array(); while ($row = mysql_fetch_assoc($rs)) { $result = array(); foreach ($row as $f => $v) { $result[$f] = $v; } $object_id = intval($row[SearchFields_MessageRecipient::ID]); $results[$object_id] = $result; } // [JAS]: Count all if ($withCounts) { $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT mr.id) " : "SELECT COUNT(mr.id) ") . $join_sql . $where_sql; $total = $db->GetOne($count_sql); } mysql_free_result($rs); return array($results, $total); }
/** * Enter description here... * * @param array $columns * @param DevblocksSearchCriteria[] $params * @param integer $limit * @param integer $page * @param string $sortBy * @param boolean $sortAsc * @param boolean $withCounts * @return array */ static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true) { $db = DevblocksPlatform::getDatabaseService(); $fields = SearchFields_Stats::getFields(); // Sanitize if (!isset($fields[$sortBy])) { $sortBy = null; } list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy); $start = $page * $limit; // [JAS]: 1-based $total = -1; $select_sql = sprintf("SELECT " . "stats.id as %s, " . "stats.current_hour as %s, " . "stats.current_day as %s, " . "stats.fax_current_hour as %s, " . "stats.fax_last_hour as %s, " . "stats.fax_sent_today as %s, " . "stats.fax_sent_yesterday as %s, " . "stats.email_current_hour as %s, " . "stats.email_last_hour as %s, " . "stats.email_sent_today as %s, " . "stats.email_sent_yesterday as %s, " . "stats.snpp_current_hour as %s, " . "stats.snpp_last_hour as %s, " . "stats.snpp_sent_today as %s, " . "stats.snpp_sent_yesterday as %s ", SearchFields_Stats::ID, SearchFields_Stats::CURRENT_HOUR, SearchFields_Stats::CURRENT_DAY, SearchFields_Stats::FAX_CURRENT_HOUR, SearchFields_Stats::FAX_LAST_HOUR, SearchFields_Stats::FAX_SENT_TODAY, SearchFields_Stats::FAX_SENT_YESTERDAY, SearchFields_Stats::EMAIL_CURRENT_HOUR, SearchFields_Stats::EMAIL_LAST_HOUR, SearchFields_Stats::EMAIL_SENT_TODAY, SearchFields_Stats::EMAIL_SENT_YESTERDAY, SearchFields_Stats::SNPP_CURRENT_HOUR, SearchFields_Stats::SNPP_LAST_HOUR, SearchFields_Stats::SNPP_SENT_TODAY, SearchFields_Stats::SNPP_SENT_YESTERDAY); $join_sql = "FROM stats "; // Custom field joins list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables($tables, $params, 'stats.id', $select_sql, $join_sql); $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : ""); $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " "; $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY stats.id ' : '') . $sort_sql; // [TODO] Could push the select logic down a level too if ($limit > 0) { $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ } else { $rs = $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs */ $total = mysql_num_rows($rs); } $results = array(); while ($row = mysql_fetch_assoc($rs)) { $result = array(); foreach ($row as $f => $v) { $result[$f] = $v; } $object_id = intval($row[SearchFields_Stats::ID]); $results[$object_id] = $result; } // [JAS]: Count all if ($withCounts) { $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT stats.id) " : "SELECT COUNT(stats.id) ") . $join_sql . $where_sql; $total = $db->GetOne($count_sql); } mysql_free_result($rs); return array($results, $total); }