/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if (isset($this) && instance_of($this, 'Comments')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return Comments::instance()->paginate($arguments, $items_per_page, $current_page); //$instance =& Comments::instance(); //return $instance->paginate($arguments, $items_per_page, $current_page); } // if }
/** * Returns al objects that will be found on the dashboard. * Functions used only in ObjectController * * @param int $page * @param int $objects_per_page * @param string $order * @param string $order_dir can be asc or desc */ function getDashboardObjects($page, $objects_per_page, $tag = null, $order = null, $order_dir = null, $types = null, $project = null, $trashed = false, $linkedObject = null, $filterName = "", $archived = false, $filterManager = '') { ///TODO: this method is horrible on performance and should not be here!!!! $queries = $this->getDashboardObjectQueries($project, $tag, false, $trashed, $linkedObject, $order, $filterName, $archived, $filterManager); if (!$order_dir) { switch ($order) { case 'name': $order_dir = 'ASC'; break; default: $order_dir = 'DESC'; } } if (isset($types) && $types) { $query = ''; foreach ($types as $type) { if ($query == '') { $query = $queries[$type]; } else { $query .= " \n UNION \n" . $queries[$type]; } } } else { $query = ''; foreach ($queries as $q) { if ($query == '') { $query = $q; } else { $query .= " \n UNION \n" . $q; } } } if ($order) { $query .= " ORDER BY `order_value` "; if ($order_dir) { $query .= " " . mysql_real_escape_string($order_dir) . " "; } } else { $query .= " ORDER BY `order_value` DESC "; } if ($page && $objects_per_page) { $start = ($page - 1) * $objects_per_page; $query .= " LIMIT " . $start . "," . $objects_per_page . " "; } elseif ($objects_per_page) { $query .= " LIMIT " . $objects_per_page; } $res = DB::execute($query); $objects = array(); if (!$res) { return $objects; } $rows = $res->fetchAll(); if (!$rows) { return $objects; } $index = 0; foreach ($rows as $row) { $manager = $row['object_manager_value']; $id = $row['oid']; if ($id && $manager) { $obj = get_object_by_manager_and_id($id, $manager); if ($obj->canView(logged_user())) { $objects[] = $obj; } } //if($id && $manager) } //foreach ProjectDataObjects::populateData($objects); $dash_objects = array(); foreach ($objects as $obj) { //Logger::log('DASH'); $dash_object = $obj->getDashboardObject(); $dash_object['ix'] = $index++; $dash_objects[] = $dash_object; } return $dash_objects; }
/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if(isset($this) && instance_of($this, 'ProjectCharts')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return ProjectCharts::instance()->paginate($arguments, $items_per_page, $current_page); } // if } // paginate
/** * Lists all contacts and clients * */ function list_all() { ajx_current("empty"); // Get all variables from request $start = array_var($_GET, 'start', 0); $limit = array_var($_GET, 'limit', config_option('files_per_page')); $page = 1; if ($start > 0) { $page = $start / $limit + 1; } $order = array_var($_GET, 'sort'); $order_dir = array_var($_GET, 'dir'); $tag = array_var($_GET, 'tag'); $action = array_var($_GET, 'action'); $attributes = array("ids" => explode(',', array_var($_GET, 'ids')), "types" => explode(',', array_var($_GET, 'types')), "tag" => array_var($_GET, 'tagTag'), "accountId" => array_var($_GET, 'account_id'), "viewType" => array_var($_GET, 'view_type'), "moveTo" => array_var($_GET, 'moveTo'), "mantainWs" => array_var($_GET, 'mantainWs'), "tagTag" => array_var($_GET, 'tagTag')); //Resolve actions to perform $actionMessage = array(); if (isset($action)) { $actionMessage = $this->resolveAction($action, $attributes); if ($actionMessage["errorCode"] == 0) { flash_success($actionMessage["errorMessage"]); } else { flash_error($actionMessage["errorMessage"]); } } // Get all emails and companies to contacts $project = active_project(); /*$contacts = $this->getContacts($tag, $attributes, $project); $companies = array(); $companies = $this->getCompanies($tag, $attributes, $project); $union = $this->addContactsAndCompanies($contacts, $companies);*/ $type = null; if ($attributes['viewType'] == 'contacts') { $type = 'Contacts'; } else { if ($attributes['viewType'] == 'companies') { $type = 'Companies'; } } $count = $this->countContactObjects($tag, $type, $project); if ($start > $count) { $start = 0; $page = 1; } if ($count > 0) { $union = $this->getContactObjects($page, $limit, $tag, $order, $order_dir, $type, $project); } else { $union = array(); } ProjectDataObjects::populateData($union); // Prepare response object $object = $this->newPrepareObject($union, $count, $start, $attributes); ajx_extra_data($object); tpl_assign("listing", $object); }